В C char
- это целочисленный тип, используемый для хранения символьных данных, обычно 1 байт.
Значение, хранящееся в i
, равно 0x80
шестнадцатеричной константе, равной 128
.
Арифметическая операция над двумя целочисленными типами (например, i << 1
) будет преобразована в более широкий тип, в данном случае в int
, поскольку 1
является константой int. В любом случае целочисленные аргументы функции переводятся в int.
Затем вы отправляете результат на printf
с указателем формата %d
, что означает «напечатать целое число».