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 に変換されます。」
したがって、指定されたコード:
C では、bool データ型は使用できません。現在。ただし、C99 では、stdbool.h ヘッダー ファイルで定義されるマクロである _Bool 型が導入されています。さらに、true と false は、それぞれ整数定数 1 と 0 に展開されるマクロです。
したがって、C:
4 < 5 は整数値 1 として評価されます。以上がBool から Int への変換は C および C で移植可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。