2014-09-19 30 views
-3

尽管格式说明符是浮点型,但下面的程序产生值= 0.000000。浮点算术运算得出的值= 0

#include <stdio.h> 
int main() 
{ 
     printf ("%f", 5/9); 
     return 0; 
} 
+0

'当整数分割,/运算的结果与任何小数部分代数商discarded' – 2014-09-19 10:10:56

回答

3

表达5/9具有两个整数参数等进行评价使用整数除法。因此结果是0

然后通过将int传递给%f格式说明符来调用未定义的行为。

更改操作数中的至少一个到一个浮点值使用浮点除法:

printf("%f", 5.0/9.0); 
1
printf ("%f", 5/9); 

5/9是一个整数除法。该表达式产生int,但f需要floatdouble参数。

更改呼叫:

printf ("%f", 5/9.0); 

执行浮点除法和有double说法。

0

59是整数。两个整数的除法将始终为整数。使它们中的一个浮子或双

printf ("%f", 5.0/9); 

printf ("%f", 5/9.0); 
+2

'5.0'和'9.0'不是'float',它们是'double' – mch 2014-09-19 10:12:53

+0

感谢您的更正:) – 2014-09-19 10:14:28