¿Por qué "sizeof (a? True: false)" da una salida de cuatro bytes?

Tengo un pequeño código sobre elsizeof operador con el operador ternario:

#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;
}

Salida (CCG):

1
1
4 // Why 4?

Pero aquí,

printf("%zu\n", sizeof(a ? true : false)); // Why 4?

el operador ternario regresaboolean tipo y tamaño debool tipo es1 byte en C.

Entoncespor quesizeof(a ? true : false) dar una salida de cuatro bytes?

Respuestas a la pregunta(7)

Su respuesta a la pregunta