C でのブール データ型のサイズの決定
すべての C プログラマーは、「bool」として知られる基本的なデータ型に遭遇します。 true または false の論理値。このデータ型を扱うときに生じる一般的な質問の 1 つは、そのサイズが常に 1 バイトであるかどうかです。
sizeof(bool) の標準定義
この質問に対する答えC 言語標準で定義されているように、sizeof(bool) は実装定義であるということです。これは、ブール値の具体的なサイズは、使用するコンパイラとプラットフォームによって異なる可能性があることを意味します。
具体的には、C 標準の §5.3.3/1 では、char、signed char、unsigned のサイズが規定されています。 char は常に 1 ですが、bool を含む他のすべての基本型のサイズは実装定義です。
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type is implementation-defined.
さらに、脚注 69 では、「sizeof(bool) が 1 である必要はない」と明示的に述べられています。
実装固有のサイジング
結果として、bool のサイズは変わる可能性がありますさまざまなコンパイラやハードウェア アーキテクチャにわたって使用できます。たとえば、一部のコンパイラは bool を単一ビットとして実装しますが、他のコンパイラは互換性の理由または特定のアーキテクチャでのパフォーマンスを最適化するために複数のバイトを使用することがあります。
したがって、bool のサイズが異なる可能性があることを認識することが重要です。常に 1 バイトであるとは限らないため、複数のプラットフォーム用の C アプリケーションを開発するとき、またはブール値のサイズについて異なる仮定がある可能性がある相互運用可能なライブラリを操作するときは、この変動性を考慮してください。
以上がC のブール データ型のサイズは常に 1 バイトですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。