Contiene 4294967214 su compilatori a 32 bit con cpu intel x86Originariamente 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
c = 174 in binario 10101110
(unsigned int)(c)
estende il segno di c fino a 32 bit tramite movsx
quindi su CPU intelcodice:10101110 ^ segno di c
11111111111111111111111110101110 = 4294967214
Una sola nota finale dallo standard ANSI C89
Sarebbe interassante sapere su RISC cosa accade.Thus, if the conversion is to unsigned int but yields a negative value, the behavior is undefined.
Chi ha un mac o ppc, può provare?