以下程序产生的值= 0.000000,尽管格式说明符是float的格式说明符。
#include <stdio.h>
int main ()
{
printf ("%f", 5/9);
return 0;
}
答案 0 :(得分:3)
表达式5/9
有两个整数参数,因此使用整数除法进行求值。因此结果是0
。
然后通过将int
传递给%f
格式说明符来调用未定义的行为。
将至少一个操作数更改为浮点值以使用浮点除法:
printf("%f", 5.0/9.0);
答案 1 :(得分:1)
printf ("%f", 5/9);
5 / 9
是整数除法。该表达式产生int
,但f
需要float
或double
参数。
将通话更改为:
printf ("%f", 5 / 9.0);
执行浮点除法并且有一个double
参数。
答案 2 :(得分:0)
5
和9
是整数。两个整数的除法将始终为整数。使其中一个浮动或双重
printf ("%f", 5.0/9);
或
printf ("%f", 5/9.0);