我碰到了这段代码,但是每次执行它时,它都会给出不同的答案。我尝试了不同的gcc和在线编译器,但两者都给出了不同的答案。这是代码
#include<stdio.h>
void main()
{
float s;
s=4/3.3*5-2.2;
printf("%d",s);
}
答案 0 :(得分:6)
您的代码问题(编译器警告会告诉您)是浮点数不是整数。 “%d”格式打印整数。
在x86或x86_64体系结构上,您会得到一个随机出现的值,因为浮点值s
被放入double
浮点值的寄存器或堆栈位置。这些与整数寄存器不同。因此,当printf
获得"%d"
的整数值时,它将得到剩下的任何东西。
但是在不同的CPU类型上可能会得到不同的结果。这对您来说是不确定的行为。