Menambah atau mengurangi nilai variabel tepat satu angka adalah operasi yang paling sering kita tulis: nomor antrian naik, stok berkurang satu, dan penghitung loop berjalan. C# menyediakan dua operator khusus untuk pola ini: ++ (increment) dan -- (decrement).
Dua Bentuk: Prefix dan Postfix #
Masing-masing operator punya dua bentuk penempatan:
| Bentuk | Nama | Urutan kerja |
|---|---|---|
++x | Prefix increment | Naikkan x terlebih dahulu, lalu pakai nilai baru |
x++ | Postfix increment | Pakai nilai lama terlebih dahulu, lalu naikkan x |
--x | Prefix decrement | Turunkan x terlebih dahulu, lalu pakai nilai baru |
x-- | Postfix decrement | Pakai nilai lama terlebih dahulu, lalu turunkan x |
Kedua bentuk berakhir pada nilai akhir variabel yang sama; perbedaannya hanya terasa ketika hasil operator langsung dipakai dalam expression yang sama.
Contoh dan Bedah Baris #
int stok = 5;
Console.WriteLine(stok++);
Console.WriteLine(stok);
Console.WriteLine(++stok);
Console.WriteLine(stok--);
Console.WriteLine(stok);
Console.WriteLine(--stok);Output yang Dihasilkan:
5
6
7
7
6
5Mari kita telaah baris demi baris:
- Baris 1 (
int stok = 5;): Variabelstokmenyimpan nilai awal5. - Baris 3 (
stok++): Bentuk postfix mengembalikan nilai lama5keWriteLine, kemudian menaikkanstokmenjadi6. - Baris 4 (
stok): Nilai yang tercetak6mengonfirmasi kenaikan pada baris sebelumnya. - Baris 5 (
++stok): Bentuk prefix menaikkanstokmenjadi7terlebih dahulu, lalu nilai baru7ikut dicetak. - Baris 6 (
stok--): Bentuk postfix mencetak nilai lama7, kemudian menurunkanstokmenjadi6. - Baris 8 (
--stok): Bentuk prefix menurunkanstokmenjadi5sebelum nilai5dicetak.
Kapan Perbedaan Prefix dan Postfix Berpengaruh #
Perbedaan keduanya hanya penting bila hasil operator langsung dipakai, misalnya di dalam Console.WriteLine(stok++) atau penugasan int lama = stok--;. Contoh berikut menangkap nilai lama sebelum decrement terjadi:
int hitung = 10;
int lama = hitung--;
Console.WriteLine(lama);
Console.WriteLine(hitung);Output yang Dihasilkan:
10
9Bentuk postfix menyalin nilai 10 ke variabel lama terlebih dahulu, kemudian menurunkan hitung menjadi 9. Bila kita menukarnya menjadi int lama = --hitung;, variabel lama akan menerima 9 dan hitung juga bernilai 9.
Bila statement hanya berisi hitung--; sendirian tanpa memakai hasilnya, kedua bentuk memberi hasil identik: nilai variabel turun satu. Bab control flow nanti memakai i++ sebagai pola bawaan penghitung loop for, dan pada konteks itu bentuk postfix adalah pilihan yang paling umum.