Hampir semua program menghitung sesuatu: aplikasi kasir menghitung total belanja, sistem tiket menghitung harga pesanan, dan laporan menghitung persentase. Semua perhitungan itu berdiri di atas operator aritmetika. C# menyediakan lima operator dasar untuk mengolah angka, dan kelimanya membawa satu perilaku khusus yang perlu kita pahami sejak awal: cara compiler menangani pembagian antar bilangan bulat.

Lima Operator Aritmetika #

Tabel berikut merangkum kelimanya beserta contoh dan hasilnya:

OperatorNamaContohHasil
+Penjumlahan7 + 29
-Pengurangan7 - 25
*Perkalian7 * 214
/Pembagian7 / 23
%Modulo (sisa bagi)7 % 21

Perhatikan hasil 7 / 2 pada tabel: nilainya 3, bukan 3,5. Perilaku ini memang disengaja dan akan kita bedah di bagian berikutnya.

Pembagian Integer versus Real #

Compiler menentukan tipe hasil pembagian dari tipe kedua operand. Ketika kedua operand bertipe int, compiler menghasilkan int juga dan memotong bagian desimal, bukan membulatkannya. Ketika salah satu operand bertipe double, hasil pembagian menjadi double dan bagian desimal tetap dipertahankan.

csharp
Console.WriteLine(7 / 2);      // kedua operand int
Console.WriteLine(7.0 / 2);    // satu operand double

Output yang Dihasilkan:

text
3
3.5

Contoh Lengkap dan Bedah Baris #

csharp
int hargaTiket = 45000;
int jumlahTiket = 3;

Console.WriteLine(hargaTiket + 5000);
Console.WriteLine(hargaTiket - 5000);
Console.WriteLine(hargaTiket * jumlahTiket);
Console.WriteLine(7 / 2);
Console.WriteLine(7 % 2);
Console.WriteLine(7.0 / 2);
Console.WriteLine(135000 % 50000);

Output yang Dihasilkan:

text
50000
40000
135000
3
1
3.5
35000

Mari kita telaah baris demi baris:

  1. Baris 1-2 (hargaTiket, jumlahTiket): Kedua variabel menyimpan data pesanan tiket; hargaTiket bernilai 45000 dan jumlahTiket bernilai 3.
  2. Baris 4-5 (+ dan -): Penjumlahan menghasilkan 50000 dan pengurangan menghasilkan 40000; kedua operasi tidak mengubah isi variabel hargaTiket.
  3. Baris 6 (hargaTiket * jumlahTiket): Perkalian menghitung total pesanan menjadi 135000.
  4. Baris 7-8 (7 / 2 dan 7 % 2): Pembagian integer menghasilkan 3 karena bagian desimal dipotong, sedangkan modulo menghasilkan 1 sebagai sisa bagi.
  5. Baris 9 (7.0 / 2): Operand pertama bertipe double, sehingga hasilnya 3.5.
  6. Baris 10 (135000 % 50000): Modulo menghasilkan 35000, yaitu sisa yang tidak habis dibagi pecahan 50000 — pola yang berguna untuk menghitung sisa pembagian lembar uang.

Operator % juga sering dipakai untuk menguji kelipatan: expression angka % 2 == 0 bernilai true ketika angka habis dibagi dua.

Overflow Saat Melewati Batas Tipe #

Tipe int memiliki batas atas sebesar 2.147.483.647 (int.MaxValue). Ketika hasil operasi melewati batas tersebut, C# secara bawaan melakukan wrap-around: nilai melompat ke batas bawah tanpa pesan galat apa pun.

csharp
int maks = int.MaxValue;
Console.WriteLine(maks + 1);

Output yang Dihasilkan:

text
-2147483648