Bool から Int への変換: 移植性の詳細な検査
特定のプログラミング シナリオでは、bool から int 値への変換が必要になります。ただし、さまざまなプラットフォーム間での移植性に関して懸念が生じます。この記事では、この変換の移植性の包括的な分析を提供し、次のアサーションがパスすることを自信を持って期待できるかどうかという問題に対処します。
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
標準準拠変換
C における bool から int への変換は、C 標準によって暗黙的に定義されています。 C 11 または 14 標準の §4.7/4、および C 17 標準の §7.8/4 によると、「ソース型が bool の場合、値 false は 0 に変換され、値 true は 1 に変換されます。」これは、次のことを意味します。
C
についての考慮事項 C99 では、基本的な _Bool 型が導入されました。整数型。 stdbool.h では、bool、true、および false マクロも導入されています。 C99 標準のセクション 7.16 では、true は整数定数 1 に展開され、false は 0 に展開されると規定されています。したがって、これらのマクロは C の bool 変換と同様に動作します。結論
bool から int への変換は、C および C99 以降をサポートするさまざまなプラットフォーム間で移植可能です。プログラマーは、この記事の冒頭で示したアサーションが両方の言語で正常に機能することを保証できます。可搬性と明瞭さを最大限に高めるために、標準の bool 型を使用することをお勧めします。
以上がBool から Int への変換は C と C99 間で本当に移植可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。