我尝试在 C 中使用 scanf() 读取 2 个值,但系统写入内存的值不等于我输入的值。这是代码:
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 or %f for %i or %li或 %lf 或 %e 或 %g ),使用 fflush(stdin) 清除键盘缓冲区,首先读取 b ,尝试所有可能的组合。我发现在 32 位操作系统上 double 的长度存在问题,这样你就不得不使用 scanf("%lf", &f) 来读取双精度。无论我做什么,第二个值总是错误的。
我在 Windows 7 32 位操作系统上使用 MS VS express 2012 for Desktop。