这是我的C程序:
#includemain(){ printf("%f", 5/3); }
我期待输出1.000000
,但我得到的输出是0.000000
.有人可以解释原因吗?
您使用错误的格式说明符.结果5/3
是int
(整数),这是你传递给的printf()
.在您的格式中,您使用%f
修饰符,这意味着float
.使用错误的printf()
修饰符是未定义的行为,这意味着这可以做任何事情,比如你的案例show 0.
要解决它,将除法的结果转换为a float
,如下所示:
printf("%f",(float)(5/3));
这将按预期打印1.0.
记住你也可以输入,例如:
printf("%lf", 5./3);
为了将5转换为double
包含5 的类型的浮点值.注意,然后您将执行浮点除法,因此结果将是1.3333.