【发布时间】:2023-03-13 06:57:01
【问题描述】:
我尝试在 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 or %lf or %e or %g),使用 fflush(stdin) 清除键盘缓冲区,读取 b首先,尝试所有可能的组合。我发现在 32 位操作系统上 double 的长度存在问题,所以你不得不使用 scanf("%lf", &f) 来读取 double。不管我做什么,第二个值总是错误的。
我在 Windows 7 32 位操作系统上使用 MS VS express 2012 for Desktop。
【问题讨论】:
-
回滚到第 3 版,因为更改导致答案无法理解。
标签: c scanf conversion-specifier