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?

questionAnswers(7)

yourAnswerToTheQuestion