c++ - C中简单表达式的奇怪输出,为什么?

标签 c++ c turbo-c++

我正在使用 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/

相关文章:

c++ - 从具有任意数量空格的文件中抓取数据集

c++ - 给定一个 QTableWidgetItem,如何设置它的 column() 返回值?

c++ - 不存在从 "std::string"到 "char"的合适转换

c++ - 图像中的物体检测

c - 使用共享内存运行程序时出现问题;有时会出现段错误; shmmax和shmall有关系吗?

c - 为什么 ATOI 在此代码中返回 0?

c++ - 如何在 Turbo C++ 3 中包含和使用 Turbo 视觉库

c++ - 如何在没有Windows API的情况下用Turbo-C++制作一个简单的文本编辑器?

c++ - 使用模板模板参数的替代方法

c - 使用箭头键选择菜单(例如 : up and down) in C