C 程序给出意外的输出
C program gives unexpected output
这是我的 C 程序:
#include <stdio.h>
main(){ printf("%f", 5/3); }
我期望输出 1.000000
,但我得到的输出是 0.000000
。有人可以解释为什么吗?
您使用了错误的格式说明符。 5/3
的结果是一个 int
(整数),这是您传递给 printf()
的结果。在您的格式中,您使用 %f
修饰符,这意味着 float
。使用错误的 printf()
修饰符是未定义的行为,这意味着这可以做任何事情,就像你的情况一样 show 0.
要解决它,将除法的结果转换为 float
,像这样:
printf("%f",(float)(5/3));
这将按预期打印 1.0。
记住你也可以输入,例如:
printf("%lf", 5./3);
为了将5转化为double
类型的浮点值,其中包含5。注意,接下来要进行浮点除法,那么结果就是1.3333。
这是我的 C 程序:
#include <stdio.h>
main(){ printf("%f", 5/3); }
我期望输出 1.000000
,但我得到的输出是 0.000000
。有人可以解释为什么吗?
您使用了错误的格式说明符。 5/3
的结果是一个 int
(整数),这是您传递给 printf()
的结果。在您的格式中,您使用 %f
修饰符,这意味着 float
。使用错误的 printf()
修饰符是未定义的行为,这意味着这可以做任何事情,就像你的情况一样 show 0.
要解决它,将除法的结果转换为 float
,像这样:
printf("%f",(float)(5/3));
这将按预期打印 1.0。
记住你也可以输入,例如:
printf("%lf", 5./3);
为了将5转化为double
类型的浮点值,其中包含5。注意,接下来要进行浮点除法,那么结果就是1.3333。