我有一小段关于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?
三元运算符返回booleantype,sizeof bool类型为1C中的字节。
那为什么要sizeof(a ? true : false)给出四个字节的输出呢?
char a; sizeof(a) == 1和的原因相同sizeof('a') == sizeof(int)(用C表示)。这与实现无关,而与语言有关。
sizeof(true)?也许这会使细化变得更加清晰(特别是,三元运算符是一个红色鲱鱼会变得很明显)。
true的#defined等于1,stdbool.h所以是的,这是字面量定义。
sizeof(true)并且sizeof(false)也是4:ide.geeksforgeeks.org/O5jvuN