Ответ 1
Короткий ответ: интегральное продвижение.
В числовой арифметике небольшие интегральные типы (включая bool
, char
, unsigned char
, signed char
, short
, unsigned short
и т.д.) повышаются до int
, если все возможные значения соответствуют в int
, в противном случае они повышаются до unsigned int
.
На большинстве машин сегодня int32_t
совпадает с int
. В случае bool + int8_t
или bool + int16_t
, оба повышаются до int
.