Benzeri bir yapı x = x++;
, muhtemelen ++
operatörün yaptıklarını yanlış anladığınızı gösterir :
// original code
int x = 7;
x = x++;
++
Operatörü kaldırmaya dayalı olarak aynı şeyi yapmak için bunu yeniden yazalım :
// behaves the same as the original code
int x = 7;
int tmp = x; // value of tmp here is 7
x = x + 1; // x temporarily equals 8 (this is the evaluation of ++)
x = tmp; // oops! we overwrote y with 7
Şimdi istediğinizi yapmak için yeniden yazalım (istediğimi):
// original code
int x = 7;
x++;
Burada incelik olduğunu ++
operatör değiştirir değişkenx
gibi bir ifadesi aksine x + x
int değerine değerlendirmek ancak değişken bırakacaktı, x
kendisi değişmez. Saygıdeğer for
döngü gibi bir yapı düşünün :
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
Dikkat i++
orada? Aynı operatör. Bu for
döngüyü böyle yeniden yazabiliriz ve aynı şekilde davranır:
for(int i = 0; i < 10; i = i + 1)
{
System.out.println(i);
}
Ayrıca ++
çoğu durumda operatörü daha büyük ifadelerde kullanmamanızı öneririm . Çünkü incelik zaman o ön karşı sonrası artış (orijinal değişken değiştirir ++x
ve x++
sırasıyla), çok kolay izini zordur ince böcek tanıtmaktır.
int x = 7; x = ++x;
elbette hala korkunç bir kod, yeniden atamanıza gerek yok.int x = 7; x++;
yeterlidir.