bool から int への変換: 移植性の詳細
元の質問:
bool 値から int への変換はどの程度移植可能ですか?次のアサーションがすべてのシステムに渡されると確信できますか?
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
答え:
はい、bool から int への変換は完全に移植可能であり、以下に準拠しています。 CもCも
説明:
C では、C 標準 (C 11 の §4.7/4 または14 規格、C 17 規格の §7.8/4、20 規格の §7.3.9/2)。これらの標準に従って:
この例では:
int x = 4 < 5;
正確に翻訳すると:
int x = true;
真だからが 1 に変換されると、アサーションは合格します。同様に、2 番目のアサーションでは、false がゼロに変換され、アサーションが成功します。
C の追加情報:
C99 より前には、C には次の情報がありませんでした。ブール型。ただし、C99 では、_Bool 型と、_Bool に展開されるマクロ bool (stdbool.h ヘッダー ファイルで定義) が導入されました。マクロ true と false も同じヘッダー ファイルで定義されており、true は整数定数 1 に展開され、false は整数定数 0 に展開されます。
C99 の §7.16 によると:
#define bool _Bool #define true 1 #define false 0
したがって、C99 以降の bool から int への変換は C と同様に動作します。 .
以上がC および C におけるブール値から整数への変換はどの程度移植可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。