candaluar ha scritto:
L'ultimo valore che vedi è 1073741824 ovvero 0x4000 0000 in esadecimale: stai lavorando con interi a 32 bit e nel momento in cui moltiplichi tale valore *2 arrivi a 0x8000 0000 che in realtà diventa un valore negativo in quanto il bit più significativo che indica il segno viene settato.
Ok, ora capisco meglio.
candaluar ha scritto:
Comunque, a mio avviso, la traccia ti richiede di fare qualcosa del tipo while(1) ...
Il punto è, ripeto, che stai elencando le potenze e non i multipli
Per il tipo d'esercizio, credo che quello a cui mi hai fatto arrivare tu, fosse l'obbiettivo insito.
Ad ogni modo, ho riscitto tutto da capo, e utilizzando delle variabili double:
int main()
{
cout << "Questo programma mostra tutti i multipli di due in un loop infinito." << endl;
double number = 2;
double loop = 0;
while (number > 0)
{
loop = number;
number = 2 * loop;
cout << loop << " ";
cout << number << " ";
loop = number;
number = 2 * loop;
}
return 0;
}
ora l'output mi restituisce tutte le potenze di due, e continua il suo loop visualizzando
Inf
Però se lo riavvio, può ripartire da un punto imprecisato, come mai ?
Si sul fatto delle potenze sono daccordo, sarà un errore perche i multipli di due sono (2 4 6 8 10 ecc.)... traduzioni frettolose...