1. Pendahuluan
Prioritas operator dalam bahasa C sangat penting untuk memahami bagaimana program bekerja dan mendapatkan hasil sesuai yang diinginkan. Jika urutan evaluasi operator disalahpahami, seringkali akan menimbulkan hasil yang tidak diharapkan atau bug. Pada artikel ini, kita akan membahas secara rinci prioritas dan aturan asosiativitas (pengikatan) operator utama dalam bahasa C, beserta contoh konkret untuk memperdalam pemahaman Anda.
2. Jenis Operator dan Cara Dasar Penggunaannya
2.1 Operator Aritmatika
Operator aritmatika adalah operator dasar yang digunakan untuk melakukan perhitungan angka. Operator ini sangat sering digunakan dalam program, sehingga penting untuk benar-benar memahaminya.
+
(Penjumlahan): Menjumlahkan dua nilai.-
(Pengurangan): Mengurangi dua nilai.*
(Perkalian): Mengalikan dua nilai./
(Pembagian): Membagi dua nilai (hasil pembagian bilangan bulat akan dibulatkan ke bawah).%
(Sisa bagi/modulus): Menghasilkan sisa dari pembagian.
Contoh:
int a = 10, b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int prod = a * b; // 30
int quot = a / b; // 3
int rem = a % b; // 1
2.2 Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan dua nilai dan menghasilkan nilai benar (1) atau salah (0). Sering digunakan dalam percabangan (if) dan perulangan (loop).
>
(Lebih besar dari): Benar jika nilai kiri lebih besar dari nilai kanan.<
(Lebih kecil dari): Benar jika nilai kiri lebih kecil dari nilai kanan.>=
(Lebih besar atau sama dengan): Benar jika nilai kiri minimal sama dengan nilai kanan.<=
(Lebih kecil atau sama dengan): Benar jika nilai kiri maksimal sama dengan nilai kanan.==
(Sama dengan): Benar jika kedua nilai sama.!=
(Tidak sama dengan): Benar jika kedua nilai berbeda.
int a = 5, b = 10;
if (a < b) {
printf("a lebih kecil dari b\n"); // Akan ditampilkan
}

3. Prioritas Operator dan Aturan Asosiativitas
3.1 Prioritas Operator
Prioritas operator menentukan operator mana yang akan dievaluasi lebih dulu jika ada beberapa operator dalam satu ekspresi. Berikut adalah sebagian daftar prioritas operator dalam bahasa C, diurutkan dari prioritas tertinggi:
Prioritas | Operator | Keterangan |
---|---|---|
1 | () [] -> . | Pemanggilan fungsi, akses array, anggota pointer |
2 | ++ -- | Inkrement/dekrement postfix |
3 | ++ -- | Inkrement/dekrement prefix, operasi tanda |
4 | * / % | Perkalian, pembagian, modulus |
5 | + - | Penjumlahan, pengurangan |
6 | << >> | Bit shift |
7 | < <= > >= | Operator perbandingan |
8 | == != | Kesetaraan, ketidaksamaan |
9 | & | Bitwise AND |
10 | ^ | Bitwise XOR |
11 | | | Bitwise OR |
12 | && | AND logika |
13 | || | OR logika |
14 | ? : | Operator kondisi (ternary) |
15 | = += -= | Penugasan, penugasan gabungan |
16 | , | Operator koma |
3.2 Aturan Asosiativitas
Aturan asosiativitas menentukan dari arah mana operator dievaluasi jika terdapat beberapa operator dengan prioritas yang sama. Kebanyakan operator adalah left-to-right (kiri ke kanan), namun beberapa operator seperti penugasan dan operator kondisi adalah right-to-left (kanan ke kiri).
- Left-to-right (kiri ke kanan): Operator seperti
*
,+
,-
dievaluasi dari kiri ke kanan. - Right-to-left (kanan ke kiri): Operator penugasan dan kondisi
? :
dievaluasi dari kanan ke kiri.
int a = 5, b = 10, c = 15;
int result = a - b + c; // Left-to-right: (a - b) + c = 0
4. Catatan Khusus pada Prioritas Operator Tertentu
4.1 Operator Logika
Operator AND logika (&&
) dan OR logika (||
) sering digunakan untuk menggabungkan kondisi. Perlu diperhatikan bahwa &&
memiliki prioritas lebih tinggi dari ||
, sehingga pada kode berikut Anda harus berhati-hati:
int a = 1, b = 0, c = 1;
if (a && b || c) {
printf("True\n"); // Akan ditampilkan
}
Pada contoh di atas, a && b
dievaluasi terlebih dahulu, lalu hasilnya digabungkan dengan c
menggunakan ||
. Agar urutan evaluasi lebih jelas, gunakan tanda kurung.
if ((a && b) || c) {
// Evaluasi lebih jelas
}
4.2 Operator Bitwise
Operator bitwise (&
, |
, ^
) melakukan operasi pada level bit. Prioritas operator ini lebih rendah dari operator aritmatika dan perbandingan, jadi harus berhati-hati dalam ekspresi yang kompleks.
int x = 5; // 0101
int y = 3; // 0011
int result = x & y; // 0001 (AND bitwise)
5. Contoh Program Praktis
Berikut contoh program di mana urutan prioritas operator seringkali disalahpahami, khususnya antara ||
dan &&
:
#include <stdio.h>
int main() {
int a = 0, b = 1;
if (a == 0 || a == 1 && b == 0) {
printf("True\n"); // Akan ditampilkan
}
return 0;
}
Pada contoh di atas, a == 1 && b == 0
dievaluasi lebih dulu. Hasilnya bisa tidak sesuai yang diinginkan. Untuk hasil yang benar, gunakan tanda kurung untuk memperjelas urutan evaluasi.
if ((a == 0 || a == 1) && b == 0) {
printf("True\n");
}
6. Kesimpulan
Memahami prioritas operator di bahasa C sangat penting untuk memastikan program berjalan dengan benar. Saat menggunakan ekspresi kompleks, pahami prioritas dan aturan asosiativitas operator, serta gunakan tanda kurung jika perlu untuk menghindari bug yang tidak diinginkan. Dengan memperhatikan prioritas operator, Anda dapat menulis kode yang lebih aman dan efisien.