Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-11-2011, 22:44   #1
djadry
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:
Siano x e y due variabili di tipo int. Indicare i valori che conterrà ciascuna delle due variabili dopo l'esecuzione dei seguenti frammenti di codice, nell'ipotesi che prima dell'esecuzione di ciascuno di essi x contenga 3 e y contenga 3.

x = x-- + ++y;
x = y + ++y - x;
y = x + y;
I risultati dovrebbero essere x = 3 ed y = 8. Ma a me non vengono proprio! A me risulta x = 2 ed y = 7 con i seguenti passaggi:
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...
djadry è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2011, 23:00   #2
campo23
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
campo23 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2011, 08:46   #3
djadry
Member
 
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
Quote:
Originariamente inviato da campo23 Guarda i messaggi
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
ma quindi avere x-- vuol dire utilizzare la stessa variabile e anche decrementarla nella stessa operazione?

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...
djadry è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2011, 09:31   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
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;
Nota che, per via della bassa precedenza, l'operatore di decremento postfisso (x--) verrà eseguito su x solo dopo l'assegnazione '='.
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)
Seconda riga:
Codice:
x = y + ++y - x;
Scomponiamo:
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)
Terza riga:
Codice:
y = x + y;
Scomponiamo:
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.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2011, 18:48   #5
djadry
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;
prima riga:
Codice:
x = ++x + ++y  ->  x = 4 + 4 = 8
++x  ->  ++8 = 9  ->  x = 9
++y  ->  ++3 = 4  ->  Y = 4
seconda riga:
Codice:
y = y-- + y - x  ->  y = 4 + 4 - 9 = -1
y--  -> -1-- = -2  ->  Y = -2
terza riga:
Codice:
y = x + y  ->  y = 9-2 = 7
dove sbaglio?
__________________
#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...
djadry è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2011, 19:59   #6
cirano994
Senior Member
 
L'Avatar di cirano994
 
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;
poi

Codice:
y= y-- + y  -x;
y= 4(-1) + 4 -8; 
y=0 ---> y=-1
infine

Codice:
y=x+y;
y= 8 + (-1) 
y=7
Chiaro?

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
cirano994 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2011, 13:57   #7
doccod
Member
 
Iscritto dal: Jan 2008
Messaggi: 100
<ot>

grazie per il mal di testa che mi avete fatto venire

</ot>
doccod è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2011, 14:17   #8
djadry
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...
djadry è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2011, 20:36   #9
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
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.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2011, 23:24   #10
djadry
Member
 
Iscritto dal: Dec 2009
Città: Varese
Messaggi: 274
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
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.
come spaccarsi la testa inutilmente
__________________
#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...
djadry è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Huawei punta sul canale europeo: per il ...
Ubuntu 26.04: le GPU guadagnano il 17% i...
La Commissione UE registra l'iniziativa ...
SSD troppo cari? La soluzione alla crisi...
Anteprima mondiale Hyundai IONIQ 3: segm...
Fintool sbarca su Microsoft 365: arrivan...
Hanno chiesto 1 dollaro per salvare un M...
Arriva AgentExchange, il marketplace di ...
Blizzard fa chiudere Turtle WoW: perché ...
Claude Desktop e la modifica silenziosa ...
Blue Origin ha mostrato gli interni del ...
Linux alla pari di Windows in gioco: con...
Il rientro del secondo stadio del razzo ...
Il controller ufficiale Microsoft per Xb...
DJI Power 1000 Mini: la power station da...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v