【发布时间】:2011-11-20 18:15:03
【问题描述】:
我正在尝试通过阅读 C Programming Language, 2nd Edition 来学习 C。我有一些编程经验,但没有 C 语言。
我目前在第 1 章。我有以下代码:
float f;
for (f = 0.0; f <= 3; f += 1.1)
printf("A: %3f B: %6.2f\n", f, f + 0.15);
它打印输出:
A: 0.000000 B: 0.15
A: 1.100000 B: 1.25
A: 2.200000 B: 2.35
看起来不错。
现在我将 printf 更改如下:
printf("A: %3d B: %6.2f\n", f, f + 0.15);
新的输出是
A: 0 B: 0.00
A: -1610612736 B: 0.00
A: -1610612736 B: -625777476808257557292155887552002761191109083510753486844893290688350183831589633800863219712.00
这里发生了什么?我希望浮点数转换为 int 因为我使用了 %d 但事实并非如此。另外,为什么值 B 也出错了? f这里怎么了?
【问题讨论】:
-
你没有要求它把它转换成一个整数,你告诉它它是一个整数!垃圾进,垃圾出。
标签: c floating-point printf