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