PDA

View Full Version : c assegnazione numeri con lo 0 iniziale


cavay
11-11-2005, 09:54
Ragazzi chi mi spiega il motivo per cui l'assegnazione ad una variabile intera di un numero che inizia per 0 fa cambiare il significato numerico alla variabile.

Mi spiego meglio:

supponendo di dichiarare ed assegnare due variabili(int e/o unsigned int) come segue:

int pippo = 50;
int pluto = 050;

e/o

unsgned int paperino = 15;
unsgned int zioPap = 015;

cosa succede dal punto di vista della rappresentazione macchina?perche' risultano diversi??

il risultato ottenuto se si procede a stampare i numeri e il seguente:

printf("pippo = %d\n",pippo); ===> pippo = 50
printf("pluto = %d\n",pluto); ===> pluto = 40


Non mi ricordo bene ma...qualcosa del genere l'affrontai gia' qualche anno fa ma adesso mi sfugge.
Help me!

cavay
11-11-2005, 10:10
Scrivendo il post e riflettendo a quando avevo affrontato sto problema, mi sono ricordato...grazie cmq!

Se a qualcuno interessa il motivo e' che Le costanti appartenenti ai tipi integer e parenti possono essere espresse sia in notazione decimale (come nel primo caso di assegnazione), sia in notazione esadecimale (anteponendo i caratteri 0x o 0X al valore) sia in notazione ottale (anteponendo uno 0 al valore)

Ecco quindi spiegato, infatti 50 in ottale e' priprio 40 in decimale!

Manugal
11-11-2005, 10:11
Se aggiungi uno 0 davanti a un numero quello si trasforma in un numero in base 8. Ricorda anche che se aggiungi 0x diventa un numero in base 16.

Ciao :)

Ops non mi ero accorto che ti eri già risposto da solo :D