gpt4 book ai didi

c - 关于 C 中的位掩码。为什么 (~(~0 << N)) 优于 ((1 << N) -1)?

转载 作者:太空狗 更新时间:2023-10-29 16:48:17 24 4
gpt4 key购买 nike

我确实知道 ~0 会计算最大字长位 1(因此会考虑可移植性),但我仍然不明白为什么 ((1 << N) - 1)气馁?

如果您使用第二种形式遇到任何麻烦,请分享。

最佳答案

看看这些行:

1. printf("%X", ~(~0 << 31) );
2. printf("%X", (1 << 31) - 1 );

专线1编译和行为符合预期。

专线2给出警告 integer overflow in expression

这是因为 1 << 31默认情况下被视为signed int,所以1 << 31 = -2147483648 ,这是可能的最小整数。

因此,休息 1导致溢出。

关于c - 关于 C 中的位掩码。为什么 (~(~0 << N)) 优于 ((1 << N) -1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com