Keutamaan dan Perkaitan Operator C ++

Dalam tutorial ini, kita akan belajar mengenai keutamaan dan kaitan operator di C ++ dengan bantuan contoh.

Keutamaan Pengendali C ++

Sekiranya terdapat beberapa operator dalam satu ungkapan, operasi tidak dinilai secara serentak. Sebaliknya, pengendali dengan keutamaan yang lebih tinggi membuat operasi mereka dinilai terlebih dahulu.

Mari kita pertimbangkan satu contoh:

 int x = 5 - 17 * 6; 

Di sini, pengendali pendaraban *mempunyai tahap keutamaan yang lebih tinggi daripada pengendali pengurangan -. Oleh itu, 17 * 6dinilai terlebih dahulu.

Hasilnya, ungkapan di atas setara dengan

 int x = 5 - (17 * 6);

Sekiranya kita ingin menilai 5 - 17terlebih dahulu, maka kita mesti memasukkannya ke dalam kurungan :

 int x = (5 - 17) * 6;

Contoh 1: Keutamaan Pengendali

 #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; )

Pengeluaran

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

Catatan: Oleh kerana terdapat banyak pengendali di C ++ dengan pelbagai tahap keutamaan, sangat disarankan agar kami menggunakan tanda kurung untuk menjadikan kod kami lebih mudah dibaca.

Jadual Keutamaan Pengendali C ++

Jadual berikut (diambil dari cppreference.com) menunjukkan keutamaan pengendali C ++. Tahap Keutamaan 1 menandakan pengendali keutamaan tertinggi, sementara Tahap Keutamaan 17 menandakan pengendali keutamaan terendah.

Harta persatuan akan dibincangkan sebentar lagi.

Keutamaan Pengendali Penerangan Pergaulan
1 :: Penyelesaian Skop Kiri ke kanan
2 a ++
a--
type ()
type ()
a ()
a ()
.
->
Penambahan akhiran / perbaikan
akhiran Penurunan akhiran / perbaikan akhir
Fungsi pelakon
Fungsi pelakon
Fungsi panggilan
Langganan
Akses anggota dari suatu objek
Akses anggota dari objek ptr
Kiri ke kanan
3 ++ a
--a
+ a
-a
!
~
(Jenis)
* a
& a
sizeof
co_await
baru baru ()
padam padam ()
Awalan kenaikan
awalan susutan
unari plus
minus unari
Logical TIDAK
Bitwise TIDAK
gaya C membuang
tipuan (dereference)
Alamat-of
Saiz-of
menunggu-ungkapan
peruntukan memori dinamik
memori Dynamic deallocation
Kanan ke kiri
4 . *
-> *
Pemilih objek
ahli Pemilih penunjuk ahli
Kiri ke kanan
5 a * b
a / b
a% b
Modulus
Bahagian Pendaraban
Kiri ke kanan
6 a + b
a - b

Pengurangan Penambahan
Kiri ke kanan
7 <<
>>
Peralihan kiri
Bitwise Pergeseran kanan Bitwise
Kiri ke kanan
8 <= < Pengendali perbandingan tiga hala Kiri ke kanan
9 <
<=
>
> =
Kurang daripada
Kurang daripada atau sama dengan
Lebih besar daripada
Lebih besar daripada atau sama dengan
Kiri ke kanan
10 ==
! =
Sama dengan
Tidak sama dengan
Kiri ke kanan
11 & Sedikit demi sedikit DAN Kiri ke kanan
12 ^ Bitwise XOR Kiri ke kanan
13 | Sedikit demi sedikit ATAU Kiri ke kanan
14 && Logik DAN Kiri ke kanan
15 || Logik ATAU Kiri ke kanan
16 a? b: c
lontaran
co_yield
=
+ =
- =
* =
/ =
% =
<< =
>> =
& =
=
| =
Ternary Conditional
throw operator
yield expression (C ++ 20)
Assignment
Addition Assignment
Subtraction Assignment
Multiplication 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 , Pengendali koma Kiri ke kanan

Perkaitan Pengendali C ++

Keterkaitan operator adalah arah dari mana ungkapan dinilai. Sebagai contoh,

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

Lihat a = 4;pernyataan. Keterkaitan =operator adalah dari kanan ke kiri. Oleh itu, nilai b diberikan kepada a, dan bukan ke arah yang lain.

Juga, pelbagai pengendali boleh mempunyai tahap keutamaan yang sama (seperti yang dapat kita lihat dari jadual di atas). Apabila beberapa operator dengan tahap keutamaan yang sama digunakan dalam ungkapan, mereka dinilai mengikut kaitannya .

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

Kedua-dua pengendali +=dan -=pengendali mempunyai keutamaan yang sama. Oleh kerana kaitan operator ini dari kanan ke kiri, berikut adalah bagaimana penyataan terakhir dinilai.

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

Contoh 2: Kesatuan Pengendali

 #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; )

Pengeluaran

 a = -5 b = -1

Artikel menarik...