1. ホーム
  2. c++

[解決済み] (~0L)とはどういう意味ですか?

2022-03-02 16:43:53

質問

私はX11のctypesのコーディングをしていますが、Cは分かりませんが、これを理解するのに手助けが必要です。

以下のC言語(C++かもしれませんが)のコードでは、以下のようになります。 (~0L) というのはどういう意味でしょうか?ジャバスクリプトとPythonでは ~0 というのは -1 .

812   int result = GetProperty(window, property_name,
813                            (~0L), // (all of them)
814                            &type, &format, &num_items, &properties);

ありがとうございます。

解決方法は?

0Llong すべてのビットがゼロに設定された整数値 - これが一般的な 0 . その ~ はすべてのビットを反転させることを意味し、これにより long すべてのビットが1になっている整数。

2の補数演算(ほぼ世界共通)では、すべてのビットが1に設定された符号付き値は、次のようになります。 -1 .

を使用する理由は ~0L の代わりに -1L は、その意図をより明確にするためです。これは、数字として使われることを全く意図しておらず、むしろビットの集合体として使われているのです。