Operator adalah simbol yang memberitahu compiler untuk melakukan operasi tertentu pada nilai (operand). Bayangkan operator seperti tombol kalkulator — kamu tekan + dan kalkulator tahu harus menjumlahkan. Di C++, ada banyak jenis operator yang perlu kamu kuasai. Mari kita bahas satu per satu.
Operator Aritmatika
Digunakan untuk operasi matematika dasar:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << a + b << endl; // Output: 13 (penjumlahan)
cout << a - b << endl; // Output: 7 (pengurangan)
cout << a * b << endl; // Output: 30 (perkalian)
cout << a / b << endl; // Output: 3 (pembagian integer — desimal dipotong!)
cout << a % b << endl; // Output: 1 (sisa bagi / modulo)
// Untuk hasil desimal, gunakan double
double x = 10.0, y = 3.0;
cout << x / y << endl; // Output: 3.33333
return 0;
}
Perhatian: Pembagian dua
intdi C++ menghasilkanint, bukandouble.10 / 3menghasilkan3, bukan3.33. Ini adalah sumber bug yang umum untuk pemula!
Operator Penugasan (Assignment)
int nilai = 10; // Penugasan dasar
nilai += 5; // sama dengan: nilai = nilai + 5 → 15
nilai -= 3; // sama dengan: nilai = nilai - 3 → 12
nilai *= 2; // sama dengan: nilai = nilai * 2 → 24
nilai /= 4; // sama dengan: nilai = nilai / 4 → 6
nilai %= 4; // sama dengan: nilai = nilai % 4 → 2
cout << nilai << endl;
// Output: 2
Operator Increment dan Decrement
C++ memiliki operator khusus untuk menambah atau mengurangi nilai sebesar 1:
int x = 5;
// Pre-increment: tambah dulu, baru gunakan
cout << ++x << endl; // Output: 6 (x menjadi 6, lalu dicetak)
cout << x << endl; // Output: 6
// Post-increment: gunakan dulu, baru tambah
int y = 5;
cout << y++ << endl; // Output: 5 (dicetak 5 dulu, baru y menjadi 6)
cout << y << endl; // Output: 6
// Decrement bekerja sama
int z = 10;
cout << --z << endl; // Output: 9
cout << z-- << endl; // Output: 9 (lalu z menjadi 8)
cout << z << endl; // Output: 8
Operator Perbandingan (Relational)
Menghasilkan nilai true (1) atau false (0):
int a = 10, b = 20;
cout << (a == b) << endl; // Output: 0 (false) — sama dengan?
cout << (a != b) << endl; // Output: 1 (true) — tidak sama?
cout << (a < b) << endl; // Output: 1 (true) — lebih kecil?
cout << (a > b) << endl; // Output: 0 (false) — lebih besar?
cout << (a <= b) << endl; // Output: 1 (true) — lebih kecil atau sama?
cout << (a >= b) << endl; // Output: 0 (false) — lebih besar atau sama?
Jangan bingung
=dan==!=adalah penugasan (assignment),==adalah perbandingan.if (x = 5)akan selalu bernilaitruedan mengubah nilai x, bukan membandingkannya!
Operator Logika
Digunakan untuk menggabungkan kondisi:
bool hujan = true;
bool dingin = false;
// AND (&&) — keduanya harus true
cout << (hujan && dingin) << endl; // Output: 0 (false)
cout << (hujan && true) << endl; // Output: 1 (true)
// OR (||) — salah satu cukup true
cout << (hujan || dingin) << endl; // Output: 1 (true)
cout << (false || dingin) << endl; // Output: 0 (false)
// NOT (!) — membalik nilai
cout << !hujan << endl; // Output: 0 (false)
cout << !dingin << endl; // Output: 1 (true)
Contoh penggunaan nyata:
int umur = 20;
bool punya_ktp = true;
bool boleh_masuk = (umur >= 18) && punya_ktp;
cout << boolalpha << boleh_masuk << endl;
// Output: true
Operator Bitwise
Bekerja pada level bit — sering digunakan dalam pemrograman sistem dan embedded:
int a = 6; // binary: 0110
int b = 3; // binary: 0011
cout << (a & b) << endl; // Output: 2 (AND: 0010)
cout << (a | b) << endl; // Output: 7 (OR: 0111)
cout << (a ^ b) << endl; // Output: 5 (XOR: 0101)
cout << (~a) << endl; // Output: -7 (NOT: inversi semua bit)
cout << (a << 1) << endl; // Output: 12 (shift kiri: 1100)
cout << (a >> 1) << endl; // Output: 3 (shift kanan: 0011)
Urutan Prioritas Operator (Precedence)
Sama seperti matematika, C++ memiliki aturan urutan operasi:
int hasil = 2 + 3 * 4; // 2 + (3*4) = 14, bukan (2+3)*4 = 20
cout << hasil << endl;
// Output: 14
// Gunakan tanda kurung untuk memastikan urutan yang diinginkan
int hasil2 = (2 + 3) * 4;
cout << hasil2 << endl;
// Output: 20
Urutan prioritas (dari tertinggi ke terendah):
| Prioritas | Operator |
|---|---|
| Tertinggi | (), [], ++ (postfix), -- (postfix) |
| Tinggi | ++ (prefix), -- (prefix), !, ~ |
| Tengah | *, /, % |
| Rendah | +, - |
| Lebih rendah | <, <=, >, >= |
| Rendah | ==, != |
| Lebih rendah | && |
| Terendah | ||, =, +=, -= |
Pertanyaan yang Sering Diajukan
Mengapa 10 / 3 menghasilkan 3, bukan 3.33?
Di C++, pembagian antara dua integer selalu menghasilkan integer (desimal dipotong). Ini disebut integer division. Untuk mendapatkan hasil desimal, setidaknya satu operand harus berupa double atau float: 10.0 / 3 atau (double)10 / 3.
Apa perbedaan ++x (pre-increment) dan x++ (post-increment)?
Keduanya menambah nilai x sebesar 1, tapi pada waktu berbeda. ++x menambah nilai terlebih dahulu lalu mengembalikan nilai baru. x++ mengembalikan nilai lama terlebih dahulu lalu menambahnya. Perbedaan ini penting saat digunakan dalam ekspresi seperti y = x++.
Kapan menggunakan operator % (modulo)?
Modulo berguna untuk menentukan apakah angka genap/ganjil (n % 2 == 0), membuat nilai “berputar” dalam rentang tertentu (jam digital, indeks array), atau memeriksa keterbagian. Contoh: if (tahun % 4 == 0) untuk mengecek tahun kabisat.
Apakah operator bitwise perlu dipelajari pemula?
Untuk pemula, fokus dulu pada operator aritmatika, perbandingan, dan logika. Operator bitwise lebih dibutuhkan dalam pemrograman sistem, embedded, atau optimasi performa. Kamu bisa mempelajarinya nanti saat sudah lebih mahir.
Kesimpulan
Berikut ringkasan operator C++ yang telah dipelajari:
| Kategori | Operator | Contoh |
|---|---|---|
| Aritmatika | +, -, *, /, % | 10 % 3 = 1 |
| Penugasan | =, +=, -=, *=, /= | x += 5 |
| Increment/Decrement | ++, -- | x++, --y |
| Perbandingan | ==, !=, <, >, <=, >= | a > b |
| Logika | &&, ||, ! | a && b |
Artikel sebelumnya: Variabel dan Tipe Data di C++ — cara menyimpan data dalam C++.
Langkah selanjutnya: Percabangan dan Perulangan di C++ — cara membuat keputusan dan mengulang kode dalam program C++.