有人可以帮助我并告诉我为什么这里的输出是0.000000,它应该是250万? 它只是当我把它放在第一行打印命令时,如果它在打印组的中间它进展顺利并且出2.50000 .. 那为什么它的0? for screenshot click here
#include <stdlib.h>
#include <stdio.h>
int main()
{
int a = 65;
char c = (char)a;
int m = 3.0/2;
printf("%f\n", 5 / 2);
printf("%c\n", c); // output: A
printf("%f\n", (float)a); // output: 65.000
printf("%f\n", 5.0 / 2); // output: 2.5000
printf("%f\n", 5 / 2.0); // output: 2.5000
printf("%f\n", (float)5 / 2); // output: 2.5000
printf("%f\n", 5 / (float)2); // output: 2.5000
printf("%f\n", (float)(5 / 2)); // output: 2.0000
printf("%f\n", 5.0 / 2); // output: 2.5000
printf("%d\n", m); // output: 1
system("PAUSE");
return(0);
}
谢谢, 汤姆。
答案 0 :(得分:1)
在第一行中,当你将整数5除以整数2时,计算机会进行整数除法,它会丢弃余数,得到2(不是2.5)。结果是一个整数,但是您尝试使用%f
打印它,这就是您看到0而不是2的原因。
回答你的第二个问题:当你将普通int
传递给printf但是告诉它使用%f
打印它时,printf基本上从堆栈中随机抽取垃圾来充实其余的它试图打印的浮点数。它在堆栈中找到的随机垃圾取决于(除其他事项外)你最近调用的其他函数。当你将你的printf调用移到中间时,很幸运的是,随机垃圾恰好排成一行并给出了一个半有意义的结果。