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:
| Operator | Nama | Contoh | Hasil |
|---|---|---|---|
+ | Penjumlahan | 7 + 2 | 9 |
- | Pengurangan | 7 - 2 | 5 |
* | Perkalian | 7 * 2 | 14 |
/ | Pembagian | 7 / 2 | 3 |
% | Modulo (sisa bagi) | 7 % 2 | 1 |
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.
Console.WriteLine(7 / 2); // kedua operand int
Console.WriteLine(7.0 / 2); // satu operand doubleOutput yang Dihasilkan:
3
3.5Contoh Lengkap dan Bedah Baris #
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:
50000
40000
135000
3
1
3.5
35000Mari kita telaah baris demi baris:
- Baris 1-2 (
hargaTiket,jumlahTiket): Kedua variabel menyimpan data pesanan tiket;hargaTiketbernilai45000danjumlahTiketbernilai3. - Baris 4-5 (
+dan-): Penjumlahan menghasilkan50000dan pengurangan menghasilkan40000; kedua operasi tidak mengubah isi variabelhargaTiket. - Baris 6 (
hargaTiket * jumlahTiket): Perkalian menghitung total pesanan menjadi135000. - Baris 7-8 (
7 / 2dan7 % 2): Pembagian integer menghasilkan3karena bagian desimal dipotong, sedangkan modulo menghasilkan1sebagai sisa bagi. - Baris 9 (
7.0 / 2): Operand pertama bertipedouble, sehingga hasilnya3.5. - Baris 10 (
135000 % 50000): Modulo menghasilkan35000, yaitu sisa yang tidak habis dibagi pecahan50000— 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.
int maks = int.MaxValue;
Console.WriteLine(maks + 1);Output yang Dihasilkan:
-2147483648