




printf("%d", i++); //printf("%d", i); i = i + 1;
printf("%d", ++i); //i = i + 1; printf("%d", i);










#3 Megválaszolta.
A végrehajtás sorrendje különböző.
A háttérben a programban ugyanaz történik. Van egy művelet, aminek a folyamatában az i növekszik egyel.
Eddig nincs is probléma!
A baj akkor kezdődik, amikor már kiíratni is kellene, vagy más operátorokkal együtt használjuk.
Pár példa az egyszerűség kedvéért (nyelvfüggetlenül):
1. Valahonnan az i kapott korábban egy értéket. Ezt pedig felhasználjuk egy összeadásban, és attól függően, hogy mikor van szükségünk a növelésre, változik az eredményünk.
i = 1
print = 5 + i
6
Eddig adott. Ha nekünk arra van szükségünk, hogy ezUTÁN növekedjen az i, akkor továbbra is:
i = 1
print = 5 + i++
6
viszont a háttérben i növekszik egyel, így a következő felhasználásnál már 2 lesz az értéke.
Ha arra van szükségünk, hogy a már megnövelt értéket kapjuk meg, akkor pedig:
i = 1
print = 5 + ++i
7
mert az i értékét először növeltük, és az a szám lett hozzáadva az 5-höz.
De nézzünk egy másik példát.
Adjunk i-nek egy 10-es értéket, és egyszerűen csak írassuk ki.
i = 10
print = 'i értéke kiíráskor: ' i
i értéke kiíráskor: 10
Ha picit változtatunk és ezt tesszük:
i = 10
print = 'i értéke kiíráskor: ' i++
Mit fogunk kapni?
Továbbra is ezt, mert a MÉG meg nem változtatott értéket kapjuk:
i értéke kiíráskor: 10
Csak a háttérben, a következő használathoz növeltük meg.
Mi történik fordított esetben?
i = 10
print = 'i értéke kiíráskor: ' ++i
i értéke kiíráskor: 11
Itt már 11 lesz az érték, mert a MÁR megnövelt értéket írjuk ki.
Na és milyen eredményeket kapnánk a következő esetben?
i = 10
print = '1. kör i értéke kiíráskor: ' i
print = '2. kör i++ értéke kiíráskor: ' i++
print = '3. kör ++i értéke kiíráskor: ' ++i
Nos, ezt:
1. kör i értéke kiíráskor: 10
2. kör i++ értéke kiíráskor: 10
3. kör ++i értéke kiíráskor: 12
Ezt pár kommentárral levezetve:
i = 10
//itt egyszerűen csak megadtuk az értékét, ami 10
print = '1. kör i értéke kiíráskor: ' i
//itt egyszerűen csak kiírattuk az értékét, ami továbbra is 10
print = '2. kör i++ értéke kiíráskor: ' i++
//itt kiírattuk az értékét, ami még 10, és UTÁNA növeltük 1-el és lett belőle 11, amit viszont nem írattunk ki sehol
print = '3. kör ++i értéke kiíráskor: ' ++i
//itt pedig a meglévő i értéket, ami a háttérben 11-re növekedett, először növeljük 1-el, így 12-t kapva, majd ezt a legújabb értéket írjuk ki.
i++ ugye a háttérben adja hozzá a +1 et, azt nem írja ki. Ez oké.
int i = 100;
int o = ++i + i++;
System.out.println(o);
Ebben az esetben miért 202 a végeredmény? Itt miért írja már ki? Ha ugye a háttérben adja hozzá?
int i = 100;
int o = i++;
System.out.println(o);
Itt nem íratja ki a hozzáadott értéket.
Ha műveletet végzek az i++ -al azt már kiíratja?
Köszönöm





Azért 202, mert gyakorlatilag ezt írtad le:
o = 1+100 + 100+1
Ezt a háttérben növelést nem értem, mert minden a "háttérben" történik, ha így nézzük. A különbség továbbra is az, hogy előtte vagy utána növeled a számot. Ciklusváltozóként használva nagyobb jelentősége van.





#2 Nem mindegy tud-e írni?
Úgyis programozni fog.





"#2 Nem mindegy tud-e írni?"
Mert a programozás nem azt jelenti, hogy egy formális nyelv grammatikájának megfelelő szöveget írsz, amit végül egy fordító vagy interpreter az adott gép által ismert utasítások sorozatára fordít le?
int i = 100;
int o = ++i + i++;
System.out.println(o);
Azért, mert az egyes műveleteknek megvan a maga precedenciája (műveleti sorrend). Az o = ++i és o = i++ között látható a különbség (értékadáskor van csak ez a különbség), az általad jelzett esetben azonban már nem erről van szó, hanem a műveleti sorrendről, majd annak az eredménye kerül az o változóba.





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!