Por que "sizeof (a? True: false)" fornece uma saída de quatro bytes?
Eu tenho um pequeno pedaço de código sobre osizeof
operador com o operador ternário:
#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;
}
Resultado (GCC):
1
1
4 // Why 4?
Mas aqui,
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
o operador ternário retornaboolean
tipo e tamanhobool
tipo é1
byte em C.
Entãoporquesizeof(a ? true : false)
dar uma saída de quatro bytes?