例题:输入两个int范围内的数字,判断加法后是否越界
if (a > 0 && b > 0 && (a + b < 0))
无符号数字没有问题
LeetCode的编译器对未定义行为检查非常严格,如果出现未定义行为就是Runtime Error
int 溢出 是 undefined behavior
unsigned 溢出 不是 undefined behavior
2**31 - 1 的二进制是
01111111 11111111 11111111 11111111
1
00000000 00000000 00000000 00000001
10000000 00000000 00000000 00000000
这个数字在 int 下是
-2147483648
简单题:
输入自然数a和b,判断a+b是否越界
int a[64], b[64];
a[64] = ..;
++i + ++i + ++i
x = f[x] = f[f[x]]
这句话在 C++ 和 Python 中,运行结果不一样
int F(int x)
{
while (f[x] != x)
{
x = f[x] = f[f[x]]
}
}
x^=y^=x^=y^=x