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 x
itu sendiri tidak berubah. Pertimbangkan konstruksi seperti for
loop terhormat :
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
Perhatikan i++
di sana? Ini operator yang sama. Kita dapat menulis ulang for
loop 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 ( ++x
dan 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.