我尝试在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/