Trong hướng dẫn này, bạn sẽ tìm hiểu về mức độ ưu tiên và tính liên kết của các toán tử với sự trợ giúp của các ví dụ.
Mức độ ưu tiên của các nhà khai thác
Mức độ ưu tiên của các toán tử xác định toán tử nào được thực thi trước nếu có nhiều hơn một toán tử trong một biểu thức.
Chúng ta hãy xem xét một ví dụ:
int x = 5 - 17* 6;
Trong C, mức độ ưu tiên *
cao hơn -
và =
. Do đó, 17 * 6
được đánh giá đầu tiên. Khi đó, biểu thức liên quan -
được đánh giá là mức độ ưu tiên của -
cao hơn mức độ ưu tiên của =
.
Đây là bảng các toán tử ưu tiên từ cao hơn xuống thấp hơn. Tính chất của sự kết hợp sẽ được thảo luận ngay sau đây.
Bảng ưu tiên và liên kết của nhà khai thác
Nhà điều hành | Ý nghĩa của toán tử | Sự liên kết |
---|---|---|
() () -> . | Lời gọi chức năng Tham chiếu phần tử mảng Lựa chọn thành viên gián tiếp Lựa chọn thành viên trực tiếp | Trái sang phải |
! ~ + - ++ - & * sizeof (loại) | Phủ định logic Bitwise (1 's) bổ sung cho toán tử cộng unary trừ Tăng Decrement dereference (Address) tham khảo Pointer Returns kích thước của một đối tượng định kiểu (chuyển đổi) | Phải sang trái |
* / % | Nhân Chia Số dư | Trái sang phải |
+ - | Binary plus (Addition) Binary plus (phép trừ) | Trái sang phải |
<< >> | Dịch trái Dịch phải | Trái sang phải |
< <= > > = | Nhỏ hơn Nhỏ hơn hoặc bằng Lớn hơn Lớn hơn hoặc bằng | Trái sang phải |
== ! = | Bằng với Không bằng | Trái sang phải |
& | Bitwise VÀ | Trái sang phải |
^ | Bitwise độc quyền HOẶC | Trái sang phải |
| | Bitwise HOẶC | Trái sang phải |
&& | Logic AND | Trái sang phải |
|| | Logic HOẶC | Trái sang phải |
?: | Điều hành có điều kiện | Phải sang trái |
= * = / = % = + = - = & = = | = << = >> = | Nhiệm vụ đơn giản sản phẩm Gán Gán thương Gán còn lại Gán tổng Gán chênh lệch Assign bitwise AND Assign bitwise XOR Assign bitwise OR Gán trái shift Gán dịch phải | Phải sang trái |
, | Dấu phân cách của các biểu thức | Trái sang phải |
Tính liên kết của các nhà khai thác
Tính liên kết của các toán tử xác định hướng mà một biểu thức được đánh giá. Ví dụ,
b = a;
Ở đây, giá trị của a được gán cho b chứ không phải ngược lại. Đó là bởi vì tính liên kết của =
toán tử là từ phải sang trái.
Ngoài ra, nếu có hai toán tử có cùng mức độ ưu tiên (ưu tiên), thì tính kết hợp sẽ xác định hướng mà chúng thực thi.
Chúng ta hãy xem xét một ví dụ:
1 == 2! = 3
Ở đây, các toán tử ==
và !=
có cùng mức độ ưu tiên. Và, sự liên kết của họ là từ trái sang phải. Do đó, 1 == 2
được thực thi đầu tiên.
Biểu thức trên tương đương với:
(1 == 2)! = 3
Lưu ý: Nếu một câu lệnh có nhiều toán tử, bạn có thể sử dụng dấu ngoặc đơn ()
để làm cho mã dễ đọc hơn.