|
|
1
3
将带符号整数增加到其最大值之外,即使其溢出,会导致程序具有未定义的行为。其影响是完全不可预测的。未定义的行为意味着无法保证程序的行为。这个程序可以做任何事情。它甚至不必像人们所期望的那样打印早期的数字。 编译器会将程序编译为机器指令,假设没有发生带符号整数溢出。如果实际存在溢出,它将发出的指令可能有意义,也可能没有意义。编译器不会试图理解它。
编译器可能会决定
或者编译器可能决定使用一些16位加法指令,当加法超过最大大小时,会导致回绕。 或者编译器可能会注意到你的循环增量超过了最大大小,并删除了整个循环,因为在有效的程序中,你的增量不可能超过最大大小。那么就根本没有输出了。 或者编译器可能会注意到程序的增量总是超过最大大小,并且编译失败,并出现错误。 或者编译器可能会执行我没有列出的任何其他操作。 |
|
|
Jason A · 为什么c++对象中的这个私有变量没有更新?复制 1 年前 |
|
Robbert · 用程序求有限序列中的一个数 2 年前 |
|
|
Pertev · 使用for循环作为延迟的替代方案? 2 年前 |
|
|
Franta123456 · 如何将以前的值存储到数组中 8 年前 |