Что-то я не пойму, почему в этом коде получается разница между языками
$ cat main.c
#include <stdio.h>
#include <inttypes.h>
int main()
{
uint8_t a = 0;
uint8_t b = 1;
size_t sz = sizeof((uint8_t)0 ? a : b);
printf("sz=%u\n", sz);
return 0;
}
$ gcc main.c
$ ./a.out
sz=4
$ g++ main.c
$ ./a.out
sz=1
Проверял с gcc, clang, MS VC разных версий, варьировал стандарты.
Компилятор C++ вычисляет размер правильно. Наверное большинство людей такой результат и ожидало бы. Чего ж тогда сишному не нравится? Откуда четвёрка, даже на 64-х разрядной машине? Гуру, просветите.