「sizeof(a ? true : false)」の出力が4バイトになるのはなぜですか? 質問する

「sizeof(a ? true : false)」の出力が4バイトになるのはなぜですか? 質問する

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;
}

出力(湾岸協力会議):

1
1
4 // Why 4?

しかし、ここで、

printf("%zu\n", sizeof(a ? true : false)); // Why 4?

三項演算子はbooleantype を返し、sizeof booltype は1C ではバイトです。

それからなぜsizeof(a ? true : false)4 バイトの出力になるのでしょうか?

ベストアンサー1

それはあなたが持っているからです#include <stdbool.h>。そのヘッダーマクロを定義する trueおよびとfalseなるので、ステートメントは次のようになります。10

printf("%zu\n", sizeof(a ? 1 : 0)); // Why 4?

sizeof(int)あなたのプラットフォームでは 4 です。

おすすめ記事