1. ホーム
  2. c++

[解決済み] C++で変数への~0uの代入はどのような意味があるのでしょうか?[重複しています]。

2022-03-03 05:27:30

質問

なるほど 0u は符号なし0を意味しますが ~ はどういう意味ですか?この場合、反転を意味するのでしょうか、それとも何か別の意味があるのでしょうか?

どのように解決するのですか?

整数のすべてのビットが反転し、この場合、すべてのビットが1になる数値が生成されることを示します。

符号なしなので、代入中に整数が拡張されると、拡張ビットは0になることに注意してください。 unsigned short は2バイトで unsigned int は4です。

unsigned short s = ~0u; // 0xFFFF
unsigned int i = s;     // 0x0000FFFF

一般的な数値型のビットを反転させる必要がある場合 T という構文が使えます。 ~(T(0)) .