Ecco il mio codice problema:Il carattere non firmato c = 255 è "11111111" o no?
#include "stdio.h"
int main()
{
char a = -1;
unsigned char b = 255;
unsigned char c = 0;
if((~a) == c)
printf("OK 1");
else
printf("bad 1");
printf("\n");
if((~b) == c)
printf("OK 2");
else
printf("bad 2");
printf("\n");
}
mi aspettavo questo da stampare:
OK 1
OK 2
Ma, ottengo OK 1 e cattivo 2!
Se unsigned char b
è 255 (11111111), quindi ~ b deve essere 00000000. Perché non è uguale c?
Io lavoro su Linux SUSE, utilizzando gcc.
È possibile utilizzare il codice per la prova che? È difficile immaginare –
* Il tuo * codice lo dimostra. È solo il modo in cui funziona C. –
OK, hai ragione. –