【发布时间】:2012-04-09 06:39:04
【问题描述】:
我不确定我做错了什么,但我无法从控制台读取双精度。出于某种原因,阅读它可以正常工作。我正在使用 Xcode。
double n1;
// get input from the user
printf("Enter first number: ");
scanf("%f", &n1);
printf("%f", n1);
无论我输入什么,这总是会打印 0。
【问题讨论】:
我不确定我做错了什么,但我无法从控制台读取双精度。出于某种原因,阅读它可以正常工作。我正在使用 Xcode。
double n1;
// get input from the user
printf("Enter first number: ");
scanf("%f", &n1);
printf("%f", n1);
无论我输入什么,这总是会打印 0。
【问题讨论】:
%f 正在寻找浮点数,而不是双精度数。如果要使用双精度,请使用%lf 格式。
除了有点有趣之外,clang 会在没有任何额外标志的情况下对此发出警告,gcc 4.6 即使使用 -Wall -Wextra -pedantic 也不会发出警告。
【讨论】:
%f 用于single precision floating-point value(浮点数)。您需要的格式说明符是%lf,意思是long precision floating-point value(双精度)。
【讨论】: