一个 7 行 C 代码的运行分析
深入理解计算机操作系统第3版、练习题2.44
源程序
//#include <stdio.h>
#include "limits.h"
int fun_A(int x) {
return (x > 0) || (x - 1) < 0;
}
int main() {
fun_A(INT_MIN);
return 0;
}
运行结果
32位补码域中、此表达式全为真
迷惑所在
当输入值为 INT_MIN 时,数据溢出为正数,求问为何表达式依旧运行无错?
汇编级别分析
为什么进行比较判断时、省略了 -1 的操作?

就是编译器的原因,我用了两个在线编译器,一个出来0 一个出来1