C中简单表达式的奇怪输出,为什么?
Weird output of simple expression in C, why?
我使用TurboC++。我写下面的表达式,这不是导致正确的评估,我错过了背后的一些概念?
int c=300*300/300;
printf("%d",c);
输出为
81年
为什么?
300*300 is 90000.
假设int为16位,则溢出
溢出环绕,给出:24464
。
24465/300 = 81.55
不要依赖这个。
300 * 300/300从左到右求值
300 * 300溢出16位有符号整型(Turbo c++中的int
是16位)。由于计算将在有符号算术中进行,结果是未定义的。
300 * 300的结果是24464。(24464 + 32768 + 32768 = 90000).
24464/300 = 81
相关文章:
- 为什么我的代码在输出中增加了93天
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 为什么rk4.do_step不输出C++中的初始条件
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 为什么我在输出端得到 nan?
- 为什么递归函数的最终输出是 5?
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么输出精度没有正确舍入?
- 为什么这个程序的输出不如预期
- 有人可以向我解释为什么控制台输出 0 吗?
- 为什么文件不是由 F 流创建的,或者即使它是输出只是垃圾值?
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 为什么在这种情况下,bool 类型的输出等于 0?
- 执行此代码时,它不显示任何输出.为什么?
- 使用相同消息重新引发新异常会导致垃圾输出.为什么?
- 我的程序产生错误的输出.为什么
- 怪异的输出:为什么这段代码会给出任何有意义的输出,更不用说这个了
- %n格式说明符程序,在不同的编译器上提供不同的输出.为什么?
- 我的简单类函数中出现意外输出.为什么
- 如果语句不求值为false?程序给出奇怪的输出.为什么