ホームページ >バックエンド開発 >C++ >Bool から Int への変換は C および C で移植可能ですか?

Bool から Int への変換は C および C で移植可能ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 02:50:15163ブラウズ

Is Bool-to-Int Conversion Portable in C and C  ?

bool から int への変換

次のコード スニペットを考えてみましょう:

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);

これは変換ですか?という疑問が生じます。ポータブル?両方のアサーションがパスすることを保証できますか?

答え:

はい、この変換は完全に移植可能であり、C 標準に準拠しています。 bool から int への明示的な変換は、C 11 または 14 標準の §4.7/4、および C 17 標準の §7.8/4 で定義されているように、C では暗黙的です。

具体的には、標準では次のように規定されています。 「ソース型が bool の場合、値 false は 0 に変換され、値 true は 1 に変換されます。」

したがって、指定されたコード:

  • 4 < 5 は true と評価され、暗黙的に 1 に変換され、x に格納されます。 5 は false と評価され、暗黙的に 0 に変換され、x に格納されます。
C の注意:

C では、bool データ型は使用できません。現在。ただし、C99 では、stdbool.h ヘッダー ファイルで定義されるマクロである _Bool 型が導入されています。さらに、true と false は、それぞれ整数定数 1 と 0 に展開されるマクロです。

したがって、C:

4 < 5 は整数値 1 として評価されます。
  • 4 > 5 は整数値 0 として評価されます。

以上がBool から Int への変換は C および C で移植可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。