ブール値を整数に変換すると、常に 0 または 1 になることができますか?
ブール値を整数に変換するとき、多くのコンパイラは、 0 または 1 のみを保持するため、この動作の信頼性について疑問が生じます。例を見てみましょう:
int a = 2; bool b = a; int c = 3 + b; // What is the result? 4 or 5?
答え: はい、bool は整数に変換されると 0 または 1 であることが保証されます。
C の場合:
C 標準 (§4.5/4) では、次のように明示的に規定されています。 「bool 型の右辺値は、false が 0 になり、true が 1 になることで、int 型の右辺値に変換できます。」
C:
値が_Bool に変換されると、0 または 1 になります (§6.3.1.2/1): "スカラー値が _Bool に変換されると、結果は次のようになります。値が 0 と等しい場合は 0、それ以外の場合、結果は 1 です。
int に変換する場合、int は 0 と 1 を保持できるため、値は変わりません (§6.3. 1.3).
以上がブール値を整数に変換すると、結果は常に 0 または 1 になりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。