У меня есть небольшой фрагмент кода о операторе 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)
дает вывод четырех байтов?