Estoy confundido acerca de cómo se produce la promoción de tipo en caso de printf y en general. He probado el siguiente códigotipo de impresión promoción y extensión de signo
unsigned char uc = 255
signed char sc = -128
printf("unsigned char value = %d \n", uc);
printf("signed char value = %d \n", sc);
Esto da el siguiente resultado:
unsigned char value = 255
signed char value = -128
Esto me ha dejado preguntándose acerca de cómo se realice efectivamente la promoción y si una extensión de signo sucede o no. Si se hace una extensión de signo, entonces el valor 255 se debe imprimir como valor negativo (-128 restante igual) y si no se hace extensión de signo, entonces -128 debería haberse impreso como un valor positivo (255 restantes iguales). Por favor explique.