c语言的小小问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:58:39
#include"stdio.h"
main()
{int a,b;
scanf("%4d+%3d",&a,&b);
printf("%d,%d",a,b);
}
我输入123411111111则给a为1234而b是64
而我1234后面无论写什么都是64给b

是你的scanf里面的格式化字符串的问题,如果你要写
scanf("%4d+%3d",&a,&b);
你键盘输入就必须严格按照"%4d+%3d"的格式,你写"%4d+%3d"就告诉scanf你键盘输入的两个数是通过+来间隔区分的,那scanf待会儿读取你的输入的时候就按照+来区别它读到的是两个数,比如说你输入1234+567,操作就能得到你想要的结果,否则scanf就没办法区分你输入的是一个数还是两个数,操作就是无定义的。结果也就是任意的。
楼上的提到说你输入的那个数本身越界,不是问题,因为你用的是%4d,scanf读到了4个字符就自动停了,不会出现越界的问题。

你已经规定a,b为int,int是两个字节,123411111111已经超过了长度,会出错。

int为两个字节,意思就是说你输入最大数为2^16-1为65535,只要起了这个数不行了。