Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Fondamenti di architettura e programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=234)
-- Chiarimento operatori logici (http://www.dsy.it/forum/showthread.php?threadid=42605)
Chiarimento operatori logici
Salve,
volevo chiedervi un chiarimento, in particolare è l'esercizio 2 dello scritto del 2 marzo 2011.
Esattamente non ho capito questa parte:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
sostituendo i valori nella condizione si ha:
4>=(4>3) [e y diventa 3]
ora, nella parentesi il risultato dovrebbe essere un boolean con risultato true, e ora mi chiede se 4>= di un true? sbaglio a ragionare? qualcuno me lo spiega? thanks!
*modifica [e y diventa 4, scusate].
Risolto da solo.
Le parentesi ingannano, equivale a dire boolean b = x>=x>y++ ? x++ : y++;
Quindi 4>=4>3 ? true
Dato:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
Passo 1.
int x=4; int y=3;
(x>y++) ? x++ : y++, i.e. 4>3? SI, e incrementiamo x.
Passo 2.
int x=5; y=4 (y si è incrementato dopo la valutazione x>y++)
x>=(...)?, i.e.5>=5? SI.
Passo 3.
boolean b=TRUE.
Risultato finale:
int x = 5;
int y = 4;
boolean b = TRUE;
Originally posted by oksana213
Dato:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
Passo 1.
int x=4; int y=3;
(x>y++) ? x++ : y++, i.e. 4>3? SI, e incrementiamo x.
Passo 2.
int x=5; y=4 (y si è incrementato dopo la valutazione x>y++)
x>=(...)?, i.e.5>=5? SI.
Passo 3.
boolean b=TRUE.
Risultato finale:
int x = 5;
int y = 4;
boolean b = TRUE;
All times are GMT. The time now is 07:17. | Show all 5 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.