下面的程序打印 123828749, 0.000000,但我期望打印 123828749, 123828749.0。从哪里得到 0.000000 ?
#include <stdio.h>
void main()
{
double x = 123828749.66;
int y = x;
printf("%d\n", y);
printf("%lf\n", y);
}
谢谢
最佳答案
在第二次调用 printf
时,您传递了一个 int
,但格式字符串是 %lf
,它需要一个浮点值被通过。这会调用未定义的行为。
如果您希望在将 y
传递给 printf
时将其视为浮点值,则需要显式转换:
printf("%lf\n", (double)y);
关于c - 交叉格式说明符的 printf 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742701/