K & R утверждает, что если один из операндов является int
, то другой операнд будет преобразован в int
.Конечно, это только после того, как все другие правила (такие как long double
, float
, unsigned int
и т. Д.) Были соблюдены.
По этой логике char
будет преобразовано в int
, если другой операнд был int
.Но что, если самый высокий тип целого числа в операции - short
?
Теперь, очевидно, мне не нужно явно преобразовывать char
в большее целое число, но мне интересно, действительно ли ANSI-C обработать неявное преобразование между char
и short
под капотом?K & R ничего об этом не говорит.
Скажите, у меня есть следующие строки кода:
char x = 'x';
short y = 42;
short z = x + y;
Будет ли x
преобразован в short
?Или вообще не будет никакого преобразования для начала?
Просто чтобы прояснить: я не спрашиваю, нужно ли или как конвертировать из char
в short
.Я просто хочу знать, что происходит с неявными преобразованиями типов.