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 + xint değerine değerlendirmek ancak değişken bırakacaktı, xkendisi değişmez. Saygıdeğer fordö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 fordö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 ++xve 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.