该程序的输出是什么?

时间:2018-08-02 02:38:56

标签: c

我碰到了这段代码,但是每次执行它时,它都会给出不同的答案。我尝试了不同的gcc和在线编译器,但两者都给出了不同的答案。这是代码

#include<stdio.h>

 void main()
{
float s;
s=4/3.3*5-2.2;
printf("%d",s);
}

1 个答案:

答案 0 :(得分:6)

您的代码问题(编译器警告会告诉您)是浮点数不是整数。 “%d”格式打印整数。

在x86或x86_64体系结构上,您会得到一个随机出现的值,因为浮点值s被放入double浮点值的寄存器或堆栈位置。这些与整数寄存器不同。因此,当printf获得"%d"的整数值时,它将得到剩下的任何东西。

但是在不同的CPU类型上可能会得到不同的结果。这对您来说是不确定的行为。