Меня смущает, как происходит повышение типа в случае с printf и вообще. Я попробовал следующий код
unsigned char uc = 255
signed char sc = -128
printf("unsigned char value = %d \n", uc);
printf("signed char value = %d \n", sc);
Это дает следующий результат:
unsigned char value = 255
signed char value = -128
Это заставило меня задуматься о том, как на самом деле происходит продвижение и происходит ли расширение знака или нет. Если расширение знака выполняется, то значение 255 должно быть напечатано как отрицательное значение (-128 остается прежним), а если расширение знака не выполняется, то -128 должно быть напечатано как положительное значение (255 остается прежним). Пожалуйста, объясни.