Kezdőoldal » Számítástechnika » Programozás » Mi a különbség a ++i és az...

Mi a különbség a ++i és az i++ között?

Figyelt kérdés

2020. márc. 7. 12:16
 1/10 anonim ***** válasza:
0%
A sorrend.
2020. márc. 7. 12:32
Hasznos számodra ez a válasz?
 2/10 anonim válasza:
86%
Az i++ az átadja i értékét és növeli a ++i az növeli i értékét és utána adja át
2020. márc. 7. 12:36
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:

Poénos az első komment!


Köszönöm szépen a 2. kommentben leírt magyarázatot !

2020. márc. 7. 12:42
 4/10 anonim ***** válasza:
21%
Tehát a sorrend. :D
2020. márc. 7. 15:24
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
100%

A #2-es válasza teljesen helyes, én csak szeretném vizuálissá tenni a magyarázatot egy példán keresztül. A Console.WriteLine(i++) ezt jelenti:

Console.WriteLine(i);

i = i + 1;


A Console.WriteLine(++i) pedig ezt jelenti:

i = i + 1;

Console.WriteLine(i);

2020. márc. 7. 22:57
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
A példát is nagyon köszönöm, mostmár minden világos !
2020. márc. 23. 09:21
 7/10 anonim ***** válasza:

Más már leírta elég érthetően, de azért...

Lényegi különbség az összetett kifejezésekben van.

Ha előtte van a ++ (ezt hívják prefixnek), akkor előbb növelve lesz az értéke, aztán felhasználva, ha mögötte van a ++ (ezt hívják postfixnek), akkor előbb fel lesz használva az összetett kifejezésben a még meg nem növelt érték, aztán pedig meg lesz növelve. Pl. egy tömbnél egy ciklusban: t[i++]

Vannak olyan nyelvek, pl. C és C++, ahol nem csak összetett kifejezésben van különbség, hanem önmagában, külön utasításként is. A ++i hatékonyabb, mivel nem használ ideiglenes értéket.

[link]


Esetleg még azt is hasznos lehet tudni, hogy bizonyos nyelvekben ha i++ szerepel egy utasításban, akkor ott már ne szerepeljen az i mégegyszer (pl. t[i] = i++;), mert implementációfüggő, hogy egy utasításon belül az i-t, vagy a i++-t értékeli ki előbb a fordító.


Pl. rextester.com-on a különböző c++ fordítókkal próbáld ki ezt a kódot. Más lesz az eredmény.


#include <iostream>

int main() {

int i = 0, j = 0;

std::cout << i++ << i++ << i++ << std::endl;

std::cout << ++j << ++j << ++j << std::endl;

}

2020. okt. 20. 22:06
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
2020. okt. 20. 22:10
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
2020. okt. 29. 14:20
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
2020. okt. 29. 14:21
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!