Sono confuso su come la promozione del tipo si verifica in caso di printf e in generale. Ho provato il seguente codicepromozione di tipo printf e estensione di segno
unsigned char uc = 255
signed char sc = -128
printf("unsigned char value = %d \n", uc);
printf("signed char value = %d \n", sc);
Questo dà il seguente risultato:
unsigned char value = 255
signed char value = -128
Questo mi ha lasciato chiedendo su come la promozione ha effettivamente luogo e se un estensione del segno avviene o meno. Se viene eseguita un'estensione del segno, il valore 255 deve essere stampato come valore negativo (-128 rimane lo stesso) e se non viene eseguita alcuna estensione del segno, allora -128 deve essere stato stampato come valore positivo (255 rimane lo stesso). Spiega per favore.