Prioritas dan Asosiatif Operator C ++

Dalam tutorial ini, kita akan belajar tentang prioritas dan asosiasi operator di C ++ dengan bantuan contoh.

Diutamakan Operator C ++

Jika ada beberapa operator dalam satu ekspresi, operasi tidak dievaluasi secara bersamaan. Sebaliknya, operator dengan prioritas yang lebih tinggi akan dievaluasi operasinya terlebih dahulu.

Mari kita perhatikan contoh:

 int x = 5 - 17 * 6; 

Di sini, operator perkalian *lebih diutamakan daripada operator pengurangan -. Makanya, 17 * 6dievaluasi dulu.

Hasilnya, persamaan di atas sama dengan

 int x = 5 - (17 * 6);

Jika kita ingin mengevaluasi 5 - 17terlebih dahulu, maka kita harus memasukkannya ke dalam tanda kurung :

 int x = (5 - 17) * 6;

Contoh 1: Prioritas Operator

 #include using namespace std; int main() ( // evaluates 17 * 6 first int num1 = 5 - 17 * 6; // equivalent expression to num1 int num2 = 5 - (17 * 6); // forcing compiler to evaluate 5 - 17 first int num3 = (5 - 17) * 6; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; cout << "num3 = " << num3 << endl; return 0; )

Keluaran

 num1 = -97 num2 = -97 num3 = -72

Catatan: Karena ada banyak operator di C ++ dengan beberapa tingkat prioritas, sangat disarankan agar kami menggunakan tanda kurung agar kode kami lebih mudah dibaca.

Tabel Urutan Operator C ++

Tabel berikut (diambil dari cppreference.com) menunjukkan prioritas operator C ++. Precedence Level 1 menandakan operator dengan prioritas tertinggi, sedangkan Precedence Level 17 menandakan operator dengan prioritas terendah.

Properti asosiatif akan segera dibahas.

Hak lebih tinggi Operator Deskripsi Asosiatif
1 :: Resolusi Lingkup Kiri ke kanan
2 a ++
a--
type ()
type ()
a ()
a ()
.
->
Peningkatan
sufiks / postfix Penurunan sufiks / postfix
Fungsi cast
Fungsi cast
Panggilan fungsi
Subscript
Akses anggota dari objek
Akses anggota dari objek ptr
Kiri ke kanan
3 ++ a
--a
+ a
-a
!
~
(type)
* a
& a
sizeof
co_await
new ()
delete delete ()
Prefix increment
Prefix decrement
Unary plus
Unary minus
Logical NOT
Bitwise NOT
C style cast
Indirection (dereference)
Address-of
Size-of
await-expression
Alokasi
memori dinamis Deallocation memori dinamis
Kanan ke kiri
4 . *
-> *
Pemilih objek anggota Pemilih
penunjuk anggota
Kiri ke kanan
5 a * b
a / b
a% b
Modulus
Divisi Perkalian
Kiri ke kanan
6 a + b
a - b
Penambahan
Pengurangan
Kiri ke kanan
7 <<
>>
Pergeseran kiri
bitwise Pergeseran kanan bitwise
Kiri ke kanan
8 <= < Operator perbandingan tiga arah Kiri ke kanan
9 <
<=
>
> =
Kurang dari
Kurang dari atau sama dengan
Lebih dari
Lebih dari atau sama dengan
Kiri ke kanan
10 ==
! =
Sama dengan
Tidak sama dengan
Kiri ke kanan
11 & Bitwise DAN Kiri ke kanan
12 ^ Bitwise XOR Kiri ke kanan
13 | Bitwise ATAU Kiri ke kanan
14 && DAN logis Kiri ke kanan
15 || Logis ATAU Kiri ke kanan
16 Sebuah ? b: c
melempar
co_yield
=
+ =
- =
* =
/ =
% =
<< =
>> =
& =
=
| =
Ternary Conditional
throw operator
yield expression (C ++ 20)
Assignment
Addition Assignment
Subtraction Assignment
Perkalian Assignment
Division Assignment
Modulus Assignment
Bitwise Shift Left Assignment
Bitwise Shift Right Assignment
Bitwise AND Assignment
Bitwise XOR Assignment
Bitwise ATAU Assignment
Kanan ke kiri
17 , Operator koma Kiri ke kanan

Asosiasi Operator C ++

Asosiasi operator adalah arah dari mana ekspresi dievaluasi. Sebagai contoh,

 int a = 1; int b = 4; // a will be 4 a = b;

Lihatlah a = 4;pernyataannya. Keterkaitan =operator adalah dari kanan ke kiri. Oleh karena itu, nilai b ditetapkan ke a, dan bukan ke arah lain.

Selain itu, beberapa operator dapat memiliki tingkat prioritas yang sama (seperti yang dapat kita lihat dari tabel di atas). Saat beberapa operator dengan tingkat prioritas yang sama digunakan dalam ekspresi, mereka dievaluasi sesuai dengan asosiatifnya .

 int a = 1; int b = 4; b += a -= 6;

Baik operator +=maupun -=operator memiliki prioritas yang sama. Karena asosiasi operator ini dari kanan ke kiri, berikut adalah bagaimana pernyataan terakhir dievaluasi.

  • a -= 6dievaluasi terlebih dahulu. Oleh karena itu, a akan menjadi -5
  • Kemudian b += -5akan dievaluasi. Oleh karena itu, b akan menjadi -1

Contoh 2: Asosiasi Operator

 #include using namespace std; int main() ( int a = 1; int b = 4; // a -= 6 is evaluated first b += a -= 6; cout << "a = " << a << endl; ; cout << "b = " << b; )

Keluaran

 a = -5 b = -1

Artikel yang menarik...