Thứ tự ưu tiên của toán tử trong C
Thứ tự ưu tiên toán tử trong C xác định cách biểu thức được tính toán. Ví dụ, toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước.
Ví dụ, x = 7 + 3 * 2; ở đây, x được gán giá trị 13, chứ không phải 20 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 3 * 2 và sau đó thêm với 7.
Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong một biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.
Loại | Toán tử | Thứ tự ưu tiên |
---|---|---|
Postfix | () [] -> . ++ - - | Trái sang phải |
Unary | + - ! ~ ++ - - (type)* & sizeof | Phải sang trái |
Tính nhân | * / % | Trái sang phải |
Tính cộng | + - | Trái sang phải |
Dịch chuyển | << >> | Trái sang phải |
Quan hệ | < <= > >= | Trái sang phải |
Cân bằng | == != | Trái sang phải |
Phép AND bit | & | Trái sang phải |
Phép XOR bit | ^ | Trái sang phải |
Phép OR bit | | | Trái sang phải |
Phép AND logic | && | Trái sang phải |
Phép OR logic | || | Trái sang phải |
Điều kiện | ?: | Phải sang trái |
Gán | = += -= *= /= %=>>= <<= &= ^= |= | Phải sang trái |
Dấu phảy | , | Trái sang phải |
Ví dụ
Bạn xem xét ví dụ sau để hiểu về thứ tự ưu tiên các toán tử trong ngôn ngữ C:
#includemain() { int a = 35; int b = 14; int c = 5; int d = 6; int e; e = (a + b) * c / d; printf("Gia tri cua bieu thuc (a + b) * c / d la: %d\n", e ); e = ((a + b) * c) / d; printf("Gia tri cua bieu thuc ((a + b) * c) / d la: %d\n" , e ); e = (a + b) * (c / d); printf("Gia tri cua bieu thuc (a + b) * (c / d) la: %d\n", e ); e = a + (b * c) / d; printf("Gia tri cua bieu thuc a + (b * c) / d la: %d\n" , e ); printf("===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); return 0; }
Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Các bài học lập trình C phổ biến khác tại VietJack: