@[Eternal蒟蒻](/user/398190)
``ull``的上届是 $2^{64}-1$,你的``1<<n - 1`` 相当于先 1<<n 再 -1 ,但 1<<n 越界了所以自然溢出成了 $0$(应该是0吧,反正不是原数),再-1变成了 $-1$
by ningago @ 2022-06-05 09:54:13
(上界
by ningago @ 2022-06-05 09:54:25
@[ningago](/user/371968) 对的,但是为什么 ll 就能过呢?
by Celestial_Intertwine @ 2022-06-05 09:55:07
@[Eternal蒟蒻](/user/398190)
```cpp
int main()
{
long long a,n;
n = 64;
a = 1 << n;
std::cout << a;
return 0;
}
```
这个代码的输出是1
by ningago @ 2022-06-05 09:56:46
@[ningago](/user/371968) 好吧看来是玄学混过去的
by Celestial_Intertwine @ 2022-06-05 09:57:57
@[Eternal蒟蒻](/user/398190) 有符号整数溢出是UB,所以雀食是混过去的(
by cinout001_Wii @ 2022-06-05 10:48:46