我正在使用 TurboC++。我写了下面的表达式,它没有得到正确的评估,我是否遗漏了它背后的一些概念?
int c=300*300/300;
printf("%d",c);
输出是
81
为什么?
最佳答案
300*300 is 90000.
假设 int 是 16bit,你已经溢出了。
溢出环绕,给你:24464
。
24465/300 = 81.55
不要依赖这个。这是未定义的行为。
关于c++ - C中简单表达式的奇怪输出,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31677307/