尽管格式说明符是浮点型,但下面的程序产生值= 0.000000。浮点算术运算得出的值= 0
#include <stdio.h>
int main()
{
printf ("%f", 5/9);
return 0;
}
尽管格式说明符是浮点型,但下面的程序产生值= 0.000000。浮点算术运算得出的值= 0
#include <stdio.h>
int main()
{
printf ("%f", 5/9);
return 0;
}
表达5/9
具有两个整数参数等进行评价使用整数除法。因此结果是0
。
然后通过将int
传递给%f
格式说明符来调用未定义的行为。
更改操作数中的至少一个到一个浮点值使用浮点除法:
printf("%f", 5.0/9.0);
printf ("%f", 5/9);
5/9
是一个整数除法。该表达式产生int
,但f
需要float
或double
参数。
更改呼叫:
printf ("%f", 5/9.0);
执行浮点除法和有double
说法。
5
和9
是整数。两个整数的除法将始终为整数。使它们中的一个浮子或双
printf ("%f", 5.0/9);
或
printf ("%f", 5/9.0);
'5.0'和'9.0'不是'float',它们是'double' – mch 2014-09-19 10:12:53
感谢您的更正:) – 2014-09-19 10:14:28
'当整数分割,/运算的结果与任何小数部分代数商discarded' – 2014-09-19 10:10:56