为什么以下代码的输出变为零?

时间:2013-08-25 17:39:45

标签: c printf add output

main()
{
    float a=10;
    float c;
    float b=5.5;
    c=a+b;
    printf("%d",c);
}

上述代码的输出为零。为什么?我很抱歉,如果这是一个非常简单的C概念,我是一个初学者。

2 个答案:

答案 0 :(得分:5)

您需要使用%f(或%e%g,具体取决于您的首选格式),而不是%d用于浮点数。实际上,对非整数使用%d是“未定义的行为”。

printf("%f", c);

或者,如果您尝试将浮点数舍入为整数,则必须先将其转换。

printf("%d", (int) c);

答案 1 :(得分:0)

a+b=c将导致c变为15.5 当你尝试将printc c作为十进制“%d”时,它将是“未定义的行为”,正如Chris所说。 如果你printf("%d",(int)c);你的输出将变为15,如果你printf("%f",c);你将得到15.5