Tính ưu tiên và tính liên kết của toán tử C là gì

Tinh Uu Tien Va Tinh Lien Ket Cua Toan Tu C La Gi



Các toán tử thường được sử dụng để thực hiện các phép toán số học và logic khác nhau trong C. Ngôn ngữ lập trình C tuân theo một thứ tự cụ thể được gọi là ưu tiên điều hành tính kết hợp để xác định thứ tự các thao tác trong quá trình thực hiện. các quy tắc của ưu tiên điều hành tính kết hợp giúp viết mã không có lỗi và tăng khả năng đọc mã.

Bài viết này cung cấp một hướng dẫn toàn diện để hỗ trợ bạn tìm hiểu về tính kết hợp và ưu tiên toán tử trong C.

Ưu tiên toán tử trong C

Ưu tiên điều hành mô tả trình tự trong đó một số toán tử được đánh giá trong khi đánh giá các biểu thức. Chẳng hạn, nếu một biểu thức có cả toán tử cộng và nhân, thì toán tử nào sẽ được đánh giá trước? Câu trả lời rất đơn giản, C tuân theo các quy tắc nhất định để giải quyết sự mơ hồ như vậy, thường được gọi là ưu tiên điều hành . Trong C, ưu tiên điều hành được phân loại thành 17 cấp độ, từ toán tử đơn nguyên đến toán tử điều kiện bậc ba. Các toán tử được sử dụng nhiều nhất như toán tử số học, toán tử quan hệ, toán tử logic và toán tử bit theo tiêu chuẩn C ưu tiên điều hành giao thức.







Quyền ưu tiên các quy tắc chỉ ra toán tử nào có mức độ ưu tiên cao hơn các toán tử khác khi đánh giá các biểu thức. Một số loại toán tử trong ngôn ngữ lập trình C có các mức độ khác nhau quyền ưu tiên . Chẳng hạn, toán tử một ngôi có mức độ ưu tiên lớn hơn toán tử nhị phân. Sau đây là danh sách các toán tử được sắp xếp theo thứ tự tăng dần của quyền ưu tiên :



Nhà điều hành Ý nghĩa của Toán tử tính liên kết
()
[]
->
.
cuộc 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
!
~
+

++

&
*
kích thước của
(kiểu)
phủ định logic

Phần bù theo bit (1)

cộng một ngôi

trừ một ngôi

Tăng

giảm

Dereference (Địa chỉ)

Tham chiếu con trỏ

Trả về kích thước của một đối tượng

Typecast (chuyển đổi)

Phải sang trái
*
/
%
nhân

Chia

phần còn lại

Trái sang phải
+
Nhị phân cộng (Bổ sung)

Phép trừ nhị phân (phép trừ)

Trái sang phải
<<
>>
Dịch trái

dịch chuyển phải

Trái sang phải
<
<=
>
>=
Ít 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
==
!=
Tương đương với

không bằng

Trái sang phải
& Bitwise AND 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 VÀ 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
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
bài tập đơn giản

Chỉ định sản phẩm

gán thương

Chỉ định phần còn lại

Gán tổng

Chỉ định sự khác biệt

Gán bitwise AND

Gán bitwise XOR

Gán bitwise HOẶC

Gán ca trái

Gán ca phải

Phải sang trái
, Dấu phân cách của biểu thức Trái sang phải

Các quy tắc này hướng dẫn trình biên dịch cách đánh giá các biểu thức có nhiều toán tử trong cùng một biểu thức. Ví dụ, toán tử nhân có độ ưu tiên lớn hơn toán tử cộng trong phương trình A + B * C, theo quy tắc quyền ưu tiên quy tắc. Do đó, trước tiên trình biên dịch sẽ đánh giá biểu thức B * C trước khi thêm A vào kết quả.

Hãy xem xét một ví dụ về ưu tiên điều hành thông qua mã.

#include

int chủ yếu ( ) {

int Một = 43 , b = mười một , c = 16 , đ = 31 ;

int kết quả = ++ Một * b -- + c / -- đ ;

bản inf ( 'a = %d \N ' , Một ) ;

bản inf ( 'b = %d \N ' , b ) ;

bản inf ( 'c = %d \N ' , c ) ;

bản inf ( 'd = %d \N ' , đ ) ;

bản inf ( 'kết quả = %d \N ' , kết quả ) ;

trở lại 0 ;

}

Bốn biến a, b, c và d, được khai báo trong đoạn mã trên và các giá trị ban đầu của chúng tương ứng là 43, 11, 16 và 31. Sau đó, nó áp dụng nhiều toán tử số học và phép gán cho các biến này trong một biểu thức. Biểu thức tăng giá trị của a bằng cách sử dụng toán tử tăng trước ++a, nhân kết quả với toán tử giảm sau b–, rồi cộng kết quả vào phép chia c cho giá trị giảm trước của d. (sử dụng toán tử giảm trước –d). Biến result sau đó được sử dụng để giữ kết quả tổng của biểu thức này.

đầu ra

Tính kết hợp trong C

tính liên kết đề cập đến thứ tự mà các toán tử được đánh giá trong một biểu thức có cùng mức độ ưu tiên. Trái sang phải và phải sang trái tính kết hợp là hai dạng kết hợp trong C. Nếu hai toán tử có cùng quyền ưu tiên , chúng được đánh giá từ trái sang phải theo khái niệm từ trái sang phải tính kết hợp . Tuy nhiên, nếu quan sát thấy cùng một mức độ ưu tiên, các toán tử được đánh giá từ phải sang trái theo từ phải sang trái tính kết hợp .

Ví dụ, toán tử gia tăng ++ có từ phải sang trái tính kết hợp , có nghĩa là gia tăng nhà điều hành được đánh giá sau biến. Trong khi logic AND nhà điều hành có trái sang phải tính kết hợp , có nghĩa là toán tử được đánh giá từ trái sang phải.

#include

int main() {

int a = 6 , b = 3 , c = 2 ;

kết quả int = a * b / c;

bản inf( 'kết quả = %d \N ' , kết quả);

trở lại 0 ;

}

Ba biến a, b và c được khai báo trong mã này và chúng được khởi tạo lần lượt là 6, 3 và 2. Sau đó, nó áp dụng các phép toán nhân và chia cho các biến này trong một biểu thức. Phép nhân và phép chia được xếp từ trái sang phải trong C dựa trên tính kết hợp vì chúng có cùng mức độ ưu tiên. Điều này chỉ ra rằng phép toán chia được thực hiện trước, tiếp theo là phép toán nhân khi đánh giá biểu thức, a * b / c.

đầu ra

Phần kết luận

Ưu tiên điều hành tính kết hợp là những khái niệm quan trọng trong lập trình C giúp xác định thứ tự thực hiện các biểu thức. Các nhà khai thác với cao nhất quyền ưu tiên mức độ được đánh giá đầu tiên và tính kết hợp quy tắc giúp xác định thứ tự khi sử dụng nhiều toán tử có cùng mức độ ưu tiên. hiểu biết ưu tiên điều hành tính kết hợp là điều cần thiết khi thiết kế các chương trình phức tạp và nó giúp tạo ra mã sạch hơn và hiệu quả hơn với ít lỗi hơn.