Konstruk seperti x = x++;menunjukkan Anda mungkin salah memahami apa yang dilakukan ++operator:
// original code
int x = 7;
x = x++;
Mari kita menulis ulang ini untuk melakukan hal yang sama, berdasarkan menghapus ++operator:
// 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
Sekarang, mari kita menulis ulang untuk melakukan (apa yang saya pikirkan) yang Anda inginkan:
// original code
int x = 7;
x++;
Kehalusan di sini adalah ++operator memodifikasi variabelx , tidak seperti ekspresi seperti x + x, yang akan mengevaluasi ke nilai int tetapi membiarkan variabel xitu sendiri tidak berubah. Pertimbangkan konstruksi seperti forloop terhormat :
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
Perhatikan i++ di sana? Ini operator yang sama. Kita dapat menulis ulang forloop ini seperti ini dan akan berperilaku sama:
for(int i = 0; i < 10; i = i + 1)
{
System.out.println(i);
}
Saya juga merekomendasikan untuk tidak menggunakan ++operator dalam ekspresi yang lebih besar dalam banyak kasus. Karena kehalusan kapan memodifikasi variabel asli sebelum dan sesudah kenaikan ( ++xdan x++masing-masing), sangat mudah untuk memperkenalkan bug halus yang sulit dilacak.
int x = 7; x = ++x;:, tentu saja masih kode yang mengerikan, Anda tidak perlu ditugaskan kembali.int x = 7; x++;cukup.