Kezdőoldal » Számítástechnika » Programozás » I++ és ++i között mi a külömbség?

I++ és ++i között mi a külömbség?

Figyelt kérdés

2022. dec. 17. 02:14
 1/10 anonim ***** válasza:

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

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

2022. dec. 17. 02:17
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
68%

külömbség


Helyesen: különbség

2022. dec. 17. 03:33
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
Röviden: a végrehajtás sorrendje különbözik. Egyébként a legújabb verzióban már szól érte a fordító, hogy ne használd, mert zavarossá teszi a kódolvasást.
2022. dec. 17. 03:34
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

#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.

2022. dec. 17. 12:19
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:

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

2022. dec. 18. 12:24
 6/10 anonim ***** válasza:

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.

2022. dec. 18. 13:30
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

#2 Nem mindegy tud-e írni?


Úgyis programozni fog.

2022. dec. 20. 08:44
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

"#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?

2022. dec. 20. 17:58
Hasznos számodra ez a válasz?
 9/10 metaxxa válasza:

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.

2022. dec. 23. 09:40
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
C++-ban egy kicsit gyorsabb a ++i elvileg.
2022. dec. 24. 20:22
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!