Originariamente inviato da iguana13
codice:
unsigned int ui;
int i;
char c;
unsigned char uc;

c = '®'; // Carattere 174 credo, ma è memorizzato come 128 - 174
i = int(c); // Contiene 128 - 174
ui = (unsigned int)c; // Contiene 4294967214 su intel x86
Contiene 4294967214 su compilatori a 32 bit con cpu intel x86

c = 174 in binario 10101110

(unsigned int)(c)
estende il segno di c fino a 32 bit tramite movsx
codice:
10101110
^
segno di c
quindi su CPU intel

11111111111111111111111110101110 = 4294967214

Una sola nota finale dallo standard ANSI C89
Thus, if the conversion is to unsigned int but yields a negative value, the behavior is undefined.
Sarebbe interassante sapere su RISC cosa accade.
Chi ha un mac o ppc, può provare?