Обычные арифметические преобразования в C: каково обоснование этого конкретного правила

От K & R C

Во-первых, если один из операндов long long, другой преобразуется в long double.В противном случае, если один из операндов является двойным, другой преобразуется в двойной.В противном случае, если один из операндов является float, другой преобразуется в float.В противном случае интегральные продвижения выполняются для обоих операндов.; ...

Это будет означать под выражением

char a,b,c;

c=a+b;

на самом деле рассчитывается как

c = char((int)a+(int)b);

В чем причина этого правила?

Происходят ли эти преобразования, если a, b и c были короткими?

Ответы на вопрос(3)

Ваш ответ на вопрос