[Java] Chiarimento ciclo While.. output dubbioso..
Ciao a tutti nei miei esami obbligatori ho programmazione java, però ho difficoltà a capire questo programma, specialmente il suo output..
questo è il codice
int x = 0 ;
while ( x < 5){
x--;
}System.out.print( x ) ;
il valore che mi esce stampato è $2147483647$
io mi sarei aspettato un numero negativo.. quel numero è $ 2^(31)=2147483647 $
e
int x; il valore $ x\in [-2^(31), 2^(31)-1] $
per cui mi sarei aspettato un numero negativo.. perché esce positivo?.. sono confuso..
in poche parole mi sarei aspettato questo output $ -2147483647 $
questo è il codice
int x = 0 ;
while ( x < 5){
x--;
}System.out.print( x ) ;
il valore che mi esce stampato è $2147483647$
io mi sarei aspettato un numero negativo.. quel numero è $ 2^(31)=2147483647 $
e
int x; il valore $ x\in [-2^(31), 2^(31)-1] $
per cui mi sarei aspettato un numero negativo.. perché esce positivo?.. sono confuso..
in poche parole mi sarei aspettato questo output $ -2147483647 $
Risposte
La ragione per cui ti viene stampato quel valore è che, quando lavori con tipi int, \( -2^{31} - 1 = 2^{31}-1 \).
"apatriarca":
La ragione per cui ti viene stampato quel valore è che, quando lavori con tipi int, \( -2^{31} - 1 = 2^{31}-1 \).
ho le idee un po' confuse.. scusa il min e il max dell'int è da $ -2^(31) $ a $ 2^(31)-1 $
mi stai dicendo che $ -2^(31)=2^(31) $ .. scusami ma non sto capendo..spiegati meglio..
Quello che sto dicendo è che non esiste un vero "minimo". L'operazione binaria (nel senso che lavora sulla rappresentazione binaria del numero) di sottrazione nei numeri interi viene applicata nello stesso identico modo su tutti i numeri interi e l'effetto che questa operazione ha sul valore "minimo" è di andare direttamente al valore più alto.