C程序提供意外的输出

时间:2015-12-06 20:12:42

标签: c floating-point integer printf rounding

这是我的C程序:

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

我希望输出1.000000,但我得到的输出是0.000000。有人可以解释原因吗?

1 个答案:

答案 0 :(得分:5)

您使用了错误的格式说明符。 5/3的结果是int(整数),这是您传递给printf()的结果。在您的格式中,您使用%f修饰符,即float。使用错误的printf()修饰符是未定义的行为,这意味着这可以做任何事情,例如在你的案例中显示0。

要解决此问题,请将除法结果转换为float,如下所示:

printf("%f",(float)(5/3));

这将按预期打印1.0。

请记住,您也可以键入,例如:

printf("%lf", 5./3);

为了将5转换为包含5的类型double的浮点值。注意,然后您将执行浮点除法,因此结果将是1.3333。