|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Member
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
|
Incremento e decremento variabili
Scusate se chiedo una cosa che potrebbe sembrare stupida ma mi ci sto spaccando la testa
Il problema è questo: Quote:
x = 3 + 4 x = 4 + 5 - 7 ed y = 2 + 5. Invece nell'esercizio precedente con: x = ++x + ++y; y = y-- + y - x; y = x + y; mi risultano giusti x = 8 ed y = 7 con x = 4 + 4 , y = 4 + 3 - 8 ed y = 8 -1 mi viene il dubbio che il prof possa avere sbagliato grazie a chi mi aiuterà!
__________________
#FollowMe!AMD Ryzen 1700X, ASUS Crosshair VI Hero, 32 GB DDR4 Corsair Vengeance 3200, NVidia GTX 960, Samsung 970 PRO, Phanteks Enthoo EVOLV ATX TG, LC EKWB custom loop e un po' di RGB... |
|
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Nov 2011
Messaggi: 1
|
viene x=3 e y=8 se quando hai x=3+4, decrementi il valore di x visto che c'è x--, infatti viene x=3+4-1=6 x=4+5-6=3 y=5+3=8
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
|
Quote:
non ho capito da dove esce il x=3+4-1
__________________
#FollowMe!AMD Ryzen 1700X, ASUS Crosshair VI Hero, 32 GB DDR4 Corsair Vengeance 3200, NVidia GTX 960, Samsung 970 PRO, Phanteks Enthoo EVOLV ATX TG, LC EKWB custom loop e un po' di RGB... |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
E' meglio analizzare bene ogni singola riga.
Devi tenere a mente che gli operatori di incremento (++) e decremento (--) esistono sia nella forma prefissa (--x) che postfissa (x++). La differenza tra le due forme è la precedenza dell'operatore rispetto agli altri: nella forma prefissa l'operatore ha un'alta precedenza, percui viene eseguito prima degli altri, mentre nella forma postfissa ha una bassa precedenza, adiritttura più bassa dell'operatore '=', percui viene eseguito per ultimo. Si parte con x = 3 e y = 4. Prima riga: Codice:
x = x-- + ++y; Quindi, scoponendo e sostituendo, l'ordine delle operazioni è il seguente: Codice:
(x = 3, y = 3) 1. x = x-- + ++y // 3-- + (++3) => 3(--) + 4 => 7 => x = 7 2. ++y // ++3 => 4 => y = 4 3. x-- // 7-- => 6 => x = 6 (x = 6, y = 4) Codice:
x = y + ++y - x; Codice:
(x = 6, y = 4) 1. x = y + (++y) - x // 4 + (++4) - 6 => 4 + 5 - 6 => 3 => x = 3 2. ++y // ++4 => 5 => y = 5 (x = 3, y = 5) Codice:
y = x + y; Codice:
(x = 3, y = 5) 1. y = x + y // 3 + 5 => 8 => y = 8 (x = 3, y = 8)
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 17-11-2011 alle 09:39. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
|
grazie!
ok mi viene. però non mi viene più il primo con questo metodo. codice: Codice:
x = ++x + ++y; y = y-- + y - x; y = x + y; Codice:
x = ++x + ++y -> x = 4 + 4 = 8 ++x -> ++8 = 9 -> x = 9 ++y -> ++3 = 4 -> Y = 4 Codice:
y = y-- + y - x -> y = 4 + 4 - 9 = -1 y-- -> -1-- = -2 -> Y = -2 Codice:
y = x + y -> y = 9-2 = 7
__________________
#FollowMe!AMD Ryzen 1700X, ASUS Crosshair VI Hero, 32 GB DDR4 Corsair Vengeance 3200, NVidia GTX 960, Samsung 970 PRO, Phanteks Enthoo EVOLV ATX TG, LC EKWB custom loop e un po' di RGB... |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 1413
|
Il Pre-Incremento (++x) non tocca il valore dell'assegnamento (mentre il Post-Incremento si, come è stato spiegato), quindi
x=3,y=3; Codice:
x= ++x + ++y; x= 1+3 + 1+3; x=8; Codice:
y= y-- + y -x; y= 4(-1) + 4 -8; y=0 ---> y=-1 Codice:
y=x+y; y= 8 + (-1) y=7 Sbagli nella prima riga quando consideri il ++x dopo l'assegnamento, mentre va considerato prima. Ciao
__________________
PC: Carbide 400r, Corsair TX650M, FX8320, CM 412s, Gigabyte 970-UD3, G.skill Ares 2x4GB, Crucial M500 120GB, Seagate 7200.14 2TB, Seagate 7200.12 750GB, Gigabyte GTX570. Windows 10 Pro Notebook: Dell Latitude E7450, i5-5300U, SSD 256Gb, 8GB. Windows 10 Pro LG G3 |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jan 2008
Messaggi: 100
|
<ot>
grazie per il mal di testa che mi avete fatto venire </ot> |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
|
ok, ora è chiaro. grazie!
__________________
#FollowMe!AMD Ryzen 1700X, ASUS Crosshair VI Hero, 32 GB DDR4 Corsair Vengeance 3200, NVidia GTX 960, Samsung 970 PRO, Phanteks Enthoo EVOLV ATX TG, LC EKWB custom loop e un po' di RGB... |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Fino a che resta uno studio va bene.
Ma effettivamente una scrittura come x = x++ non ha molto senso. x++ stessa e' gia' un'operazione di assegnazione.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
|
Quote:
__________________
#FollowMe!AMD Ryzen 1700X, ASUS Crosshair VI Hero, 32 GB DDR4 Corsair Vengeance 3200, NVidia GTX 960, Samsung 970 PRO, Phanteks Enthoo EVOLV ATX TG, LC EKWB custom loop e un po' di RGB... |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:55.




















