ホームページ >バックエンド開発 >C++ >Bool から Int への変換は C と C99 間で本当に移植可能ですか?

Bool から Int への変換は C と C99 間で本当に移植可能ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 22:25:14597ブラウズ

Is Bool-to-Int Conversion Truly Portable Across C   and C99?

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 に変換されます。」これは、次のことを意味します。

  • アサーション x == 1 は、4 < であるため合格します。 5 は true と評価され、int 値 1 に変換されます。
  • 4 >
  • であるため、アサーション x == 0 も合格します。 5 は false と評価され、int 値 0 に変換されます。

したがって、 bool から int への変換は完全に移植可能であり、C の標準に準拠しています。

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 サイトの他の関連記事を参照してください。

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