Poénos az első komment!
Köszönöm szépen a 2. kommentben leírt magyarázatot !
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);
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.
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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!