我尝试使用C语言的scanf()读取两个值,但系统写入内存中的值与我输入的值不相等。这是代码:
double a,b;
printf("--------\n"); //seperate lines
scanf("%ld",&a);
printf("--------\n");
scanf("%ld",&b);
printf("%d %d",a,b);
如果我输入1和2,CMD返回一个正确的结果,但是b=-858993460。这是我已经尝试过的方法:使用float或int代替double,使用scanf_s,使用scanf("%d或%f代替%i或%li或%lf或%e或%g"),使用fflush(stdin)清除键盘缓冲区,先读入变量b,尝试所有可能的组合方式。我发现在32位操作系统上double类型长度存在问题,所以必须使用scanf("%lf", &f)来读取double类型。无论我做什么,第二个值总是错误的。我在Windows 7 32位操作系统上使用MS VS Express 2012 for Desktop。