整数に変換するとブール値は常に 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)。 ).
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3