【发布时间】:2012-07-28 17:38:12
【问题描述】:
#include<stdio.h>
int main()
{
printf("%f",9/5);
return 0;
}
输出:0.000000
谁能解释一下上述程序的输出?
程序的输出不应该是 1.000000 吗?
【问题讨论】:
-
启用您的编译器警告,您应该会收到通知
printf参数类型与格式字符串不匹配。 -
另外,如果你想要输出
1.000000然后使用(float)(9/5),似乎由于某种原因没有答案提到 -
@pb2q:这并不是那个问题的真正重复。这个有两个问题:
int除法产生int,并将结果传递给printf和"%f"。我不确定我是否看到过与该组合相关的问题。 -
不过,OP 仍然知道 int 除法。如果它不被认为是问题的一部分,它确实会添加一个不必要的层,是的。
-
@Kos: gcc 给出警告;其他编译器呢?你也可以投到
double,因为无论如何它都会被提升。
标签: c