我尝试在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或%f表示%i或%li或%lf或%e或%g),使用fflush(stdin)清除键盘缓冲区,以b读取首先,尝试所有可能的组合,我发现在32位OS上double的长度存在问题,因此您被迫使用scanf(“%lf”,&f)来读取double。我所做的事,第二个值(value)总是错误的。

我将MS VS Express 2012用于Windows 7 32位OS上的桌面。

最佳答案

使用%lf格式说明符读取一个double值:

double a;
scanf("%lf",&a);

Wikipedia带有decent reference以提供可用的格式说明符。

您还需要使用%lf格式说明符来打印结果:
printf("%lf %lf",a,b);

关于c - 在C中用scanf读取 double 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13730188/

10-11 19:36
查看更多