У меня есть небольшой фрагмент кода о операторе 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, а sizeof bool - это 1 байт в C.
Затем почему sizeof(a ? true : false) дает вывод четырех байтов?