Bool から Int への変換: 0 または 1 であることが保証されますか?
C や C などのプログラミング言語では、bool は一般的に表現に使用されます。 true と false のブール値。ただし、バックグラウンドでは、これらの値は整数として保存されることがよくあります。これにより、 bool が int に変換されるとき、結果は 0 または 1 になることが保証されますか?
C
C では、答えは次のようになります。はっきりとした「はい」。 C 標準 (§4.5/4) によれば、「bool 型の右辺値は、false が 0 になり、true が 1 になることにより、int 型の右辺値に変換できます。」これは、 C で bool が int に変換されると、結果は常に 0 または 1 になることを意味します。
C
C では、状況が少し異なります。しかし、同様に明確です。 C 標準 (§6.3.1.2/1) によれば、「スカラー値が _Bool に変換されるとき、値が 0 と等しい場合、結果は 0 になります。そうでない場合、結果は 1 になります。」これは、bool (C では _Bool として表される) が int に変換されると、結果は再び 0 または 1 になることを意味します。
実際の例
説明するにはコード内のこの動作:
int a = 2; bool b = a; int c = 3 + b; // 4
この例では、ブール変数 b は次の値に初期化されます。 int a (2) ですが、bool 値は 0 または 1 として格納されるため、b は 1 になります。その後 3 を加算すると、c には値 4 が割り当てられます。これにより、bool が 1 として int に変換されることが確認され、a が保証されます。 0 または 1 の結果。
以上がC および C では、Bool から Int への変換は常に 0 または 1 ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。