Ответ 1
Результатом аддитивного оператора, применяемого двумя операндами char
, является int
.
В операндах выполняется двоичное числовое продвижение. Тип аддитивного выражения для числовых операндов - это продвинутый тип его операндов
Первые два являются постоянными выражениями, где результирующее значение - это int
, которое можно безопасно назначить char
.
Третий не является постоянным выражением, поэтому компилятор не может гарантировать никаких гарантий.
Аналогично
то почему я могу это сделать?
char c2 = (int)((int)98 + (int)97);
Это также постоянное выражение, и результат может поместиться в char
.
Попробуйте с большими значениями 12345
и 55555
.