Memahami Prioritas dan Asosiativitas Operator C: Panduan Jelas
Prioritas operator
Prioritas operator menentukan operator mana yang dieksekusi pertama jika ada lebih dari satu operator dalam ekspresi.
Pertimbangkan contoh berikut:
int x = 5 - 17* 6;
Dalam C, prioritas * lebih tinggi dari - dan =. Akibatnya, 17 * 6 dievaluasi terlebih dahulu. Kemudian ekspresi yang melibatkan - dievaluasi karena prioritas - lebih tinggi dari =.
Berikut adalah tabel prioritas operator dari yang tertinggi ke terendah. Properti associativity akan dibahas segera.
Tabel Prioritas dan Asosiativitas Operator
Operator | Arti operator | Asosiativitas | ()
[]
->
. Panggilan fungsi
Referensi elemen array
Pemilihan anggota tidak langsung
Pemilihan anggota langsung Left to right !
~
+
-
++
--
&
*
sizeof
(type) Negasi logika
Komplemen bitwise
Unary plus
Unary minus
Increment
Decrement
Dereference (Address)
Referensi pointer
Mengembalikan ukuran objek
Typecast (konversi) Right to left *
/
% Perkalian
Pembagian
Sisa pembagian Left to right +
- Penjumlahan biner
Pengurangan biner Left to right <<
>&; Pergeseran kiri
Pergeseran kanan Left to right <
<=
>
>= Kurang dari
Kurang dari atau sama
Lebih dari
Lebih dari atau sama Left to right ==
!= Sama dengan
Tidak sama dengan Left to right & Bitwise AND Left to right ^ Bitwise exclusive OR Left to right | Bitwise OR Left to right && Logical AND Left to right || Logical OR Left to right ?: Operator Kondisional Right to left =
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>= Penugasan sederhana
Penugasan hasil kali
Penugasan hasil bagi
Penugasan sisa pembagian
Penugasan jumlah
Penugasan selisih
Penugasan bitwise AND
Penugasan bitwise XOR
Penugasan bitwise OR
Penugasan pergeseran kiri
Penugasan pergeseran kanan Right to left , Pemisah ekspresi Left to right
Asosiativitas operator
Asosiativitas operator menentukan arah di mana ekspresi dievaluasi. Contohnya,
b = a;
Di sini, nilai a ditetapkan ke b, dan tidak sebaliknya. Itu karena asosiativitas operator = adalah dari kanan ke kiri.
Juga, jika dua operator dengan prioritas yang sama hadir, asosiativitas menentukan arah di mana mereka dieksekusi.
Pertimbangkan contoh berikut:
1 == 2 != 3
Di sini, operator == dan != memiliki prioritas yang sama. Dan, asosiativitasnya adalah dari kiri ke kanan. Akibatnya, 1 == 2 dieksekusi terlebih dahulu.
Ekspresi di atas setara dengan:
(1 == 2) != 3
Catatan: Jika pernyataan memiliki beberapa operator, Anda dapat menggunakan tanda kurung () untuk membuat kode lebih mudah dibaca.
Daftar Isi