Пропуски Junior Типы и неопределённое поведение обновлено

Продвижение unsigned char

Вопрос

unsigned char a = 200, b = 100; Выражение a + b имеет тип (1) и значение (2), а после unsigned char c = a + b; в c окажется (3).

Попробуйте сами

Заполните пропуски по номерам.

1
2
3
Показать ответ и разбор

Коротко

Перед сложением оба операнда продвигаются до int, поэтому a + b == 300 типа int. При присваивании в unsigned char значение берётся по модулю 256: 300 − 256 = 44.

Что в пропусках

1

int

2

300

3

44

Разбор

Перед сложением оба операнда продвигаются до int, поэтому a + b == 300 типа int. При присваивании в unsigned char значение берётся по модулю 256: 300 − 256 = 44. Это определено.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.