продвижение типа printf и расширение знака

Меня смущает, как происходит повышение типа в случае с 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 остается прежним). Пожалуйста, объясни.

5
задан vjain27 15 March 2012 в 08:14
поделиться