浮点算术运算产生值= 0

时间:2014-09-19 10:06:36

标签: c

以下程序产生的值= 0.000000,尽管格式说明符是float的格式说明符。

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

3 个答案:

答案 0 :(得分:3)

表达式5/9有两个整数参数,因此使用整数除法进行求值。因此结果是0

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

将至少一个操作数更改为浮点值以使用浮点除法:

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

答案 1 :(得分:1)

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

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

将通话更改为:

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

执行浮点除法并且有一个double参数。

答案 2 :(得分:0)

59是整数。两个整数的除法将始终为整数。使其中一个浮动或双重

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

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