我遇到了这个代码,但是当我执行它时,每次它给出不同的答案.我尝试了不同的编译器gcc和在线但是它们都给出了不同的答案.这里有代码
#include<stdio.h>
void main()
{
float s;
s=4/3.3*5-2.2;
printf("%d",s);
}
Run Code Online (Sandbox Code Playgroud)
编译器警告会告诉您的代码问题是float不是整数."%d"格式打印整数.
在x86或x86_64体系结构上,您会得到一个随机出现的值,因为浮点值s被放入浮点值的寄存器或堆栈位置double.这些与整数寄存器不同.因此,当printf获得一个整数值时,"%d"它会得到任何发生的事情.
但是你可以在不同的CPU类型上得到不同的结果.那是你未定义的行为.