为什么输出为0.000000? (C)

时间:2015-11-18 19:01:30

标签: c

有人可以帮助我并告诉我为什么这里的输出是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);
}

谢谢, 汤姆。

1 个答案:

答案 0 :(得分:1)

在第一行中,当你将整数5除以整数2时,计算机会进行整数除法,它会丢弃余数,得到2(不是2.5)。结果是一个整数,但是您尝试使用%f打印它,这就是您看到0而不是2的原因。

回答你的第二个问题:当你将普通int传递给printf但是告诉它使用%f打印它时,printf基本上从堆栈中随机抽取垃圾来充实其余的它试图打印的浮点数。它在堆栈中找到的随机垃圾取决于(除其他事项外)你最近调用的其他函数。当你将你的printf调用移到中间时,很幸运的是,随机垃圾恰好排成一行并给出了一个半有意义的结果。