[解決済み] なぜ "sizeof(a ? true : false)" は4バイトの出力をするのでしょうか?
2022-06-04 16:28:14
質問
私は
sizeof
演算子を三項演算子に置き換えたものです。
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a = true;
printf("%zu\n", sizeof(bool)); // Ok
printf("%zu\n", sizeof(a)); // Ok
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
return 0;
}
出力 ( GCC ):
1
1
4 // Why 4?
しかし、ここで
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
三項演算子は
boolean
の型と sizeof
bool
の型は
1
であり、C言語ではバイトです。
では
はなぜ
sizeof(a ? true : false)
は4バイトの出力を与えるのでしょうか?
どのように解決するのですか?
それは、あなたが
#include <stdbool.h>
. そのヘッダーは
はマクロを定義しています。
true
そして
false
であることを
1
であり
0
というように、文章はこのようになります。
printf("%zu\n", sizeof(a ? 1 : 0)); // Why 4?
sizeof(int)
は、お使いのプラットフォームで4です。
関連
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] 構造体のsizeofは、なぜ各メンバーのsizeofの合計と等しくないのですか?
-
[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?
-
[解決済み】Boolean.ToStringが "True "と出力し、"true "と出力しない理由
-
[解決済み】sizeof(あるポインタ)は常に4と同じか?
-
[解決済み】bash "if [ false ];" はfalseの代わりにtrueを返す -- なぜ?
-
[解決済み] 偽<真」という演算はきちんと定義されているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
initializer element is not constant "というエラーが表示されるのですが?
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] C言語とC++の両方で有効なコードを、それぞれの言語でコンパイルすると、異なる動作になることがありますか?
-
[解決済み] longをフォーマットするprintfの引数は何ですか?
-
[解決済み] printfにおけるdoubleの正しい書式指定子
-
[解決済み] C言語でファイルが存在するかどうかを確認する最も良い方法は何ですか?
-
[解決済み】boolはCのネイティブ型?