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?
三項演算子はboolean
type を返し、sizeof bool
type は1
C ではバイトです。
それからなぜsizeof(a ? true : false)
4 バイトの出力になるのでしょうか?
ベストアンサー1
それはあなたが持っているからです#include <stdbool.h>
。そのヘッダーマクロを定義する true
およびとfalse
なるので、ステートメントは次のようになります。1
0
printf("%zu\n", sizeof(a ? 1 : 0)); // Why 4?
sizeof(int)
あなたのプラットフォームでは 4 です。