PDA

View Full Version : [C++] Vecchi compilatori


rnuzzo
03-04-2009, 22:32
Ciao a tutti passo subito alla domanda:
Perche' in un sistema MS-DOS a 16 bit se dichiaro una variabile int a = 92126 il valore sara' troncato a 26590?

tomminno
03-04-2009, 22:36
Ciao a tutti passo subito alla domanda:
Perche' in un sistema MS-DOS a 16 bit se dichiaro una variabile int a = 92126 il valore sara' troncato a 26590?

Su un sistema a 16 bit int è a 16 bit.
92126 = 10110011111011110 (17 bit) => (16 bit) 0110011111011110 = 26590

fero86
03-04-2009, 22:37
perché tipicamente i compilatori a 16 bit stabiliscono che la dimensione di un int sia appunto di 16 bit; contando che gli int di default sono signed il range di valori é da -32768 a +32767, quindi i valori positivi sono in tutto 32768, infatti 92126 % 32768 = 26590.

edit - battuto sul tempo :p

rnuzzo
03-04-2009, 22:42
Grazie :sofico: