以下行:
printf("%ld\n", ((long) 7 << 63) >> 63));
输出-1
我已经检查过了
sizeof(long) == 8
为什么会发生这种情况?
最佳答案
((long) 7 << 63) >> 63)
调用未定义的行为 (long) 7 << 63
不能用 long
来表示.
关于C 奇怪的换档行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377834/