回答受付終了まであと1日

C99準拠Cコンパイラーで _Bool型の扱いで質問 Q1:sizeof(_Bool)の結果は処理系依存ですか? それとも 1 固定ですか? Q2:_Bool x = 2;

回答(1件)

ちゃんと勉強したわけではありませんが、 JIS X3010で見る限り Q1. 6.2.5 型 <略> 型̲Boolとして宣言されたオブジェクトは,値0及び1を格納するのに十分な大きさをもつ。 とだけあるので、sizeof(_Bool)が1より大きいことは妨げられないと考えます。内部でint型相当として扱ってsizeof(_Bool)が1より大きいことが無いとは言い切れなさそうな。 Q2, Q3. 6.3.1.2 論理型 任意のスカラ値を̲Bool型に変換する場合,その値が0に等しい場合は結果は0とし,それ以外の場合は1とする。 とあるので2は変換されて必ず1になり0になることはなく、また、 _Bool x = 2; は整数型の型変換の範囲で処理され、1になるのでエラーの要素はない、ということでは。 自信はありません。

この回答はいかがでしたか? リアクションしてみよう