|
|
1
3
将带符号整数增加到其最大值之外,即使其溢出,会导致程序具有未定义的行为。其影响是完全不可预测的。未定义的行为意味着无法保证程序的行为。这个程序可以做任何事情。它甚至不必像人们所期望的那样打印早期的数字。 编译器会将程序编译为机器指令,假设没有发生带符号整数溢出。如果实际存在溢出,它将发出的指令可能有意义,也可能没有意义。编译器不会试图理解它。
编译器可能会决定
或者编译器可能决定使用一些16位加法指令,当加法超过最大大小时,会导致回绕。 或者编译器可能会注意到你的循环增量超过了最大大小,并删除了整个循环,因为在有效的程序中,你的增量不可能超过最大大小。那么就根本没有输出了。 或者编译器可能会注意到程序的增量总是超过最大大小,并且编译失败,并出现错误。 或者编译器可能会执行我没有列出的任何其他操作。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |