Mức độ ưu tiên của toán tử xác định nhóm các thuật ngữ trong một biểu thức và quyết định cách một biểu thức được đánh giá. Một số toán tử nhất định có quyền ưu tiên cao hơn những toán tử khác; ví dụ:toán tử nhân có mức độ ưu tiên cao hơn toán tử cộng.
Ví dụ:x =7 + 3 * 2; ở đây, x được gán 13, không phải 20 vì toán tử * có mức độ ưu tiên cao hơn +, do đó, đầu tiên nó được nhân với 3 * 2 và sau đó cộng thành 7.
Ở đây, các toán tử có mức độ ưu tiên cao nhất xuất hiện ở đầu bảng, những toán tử có mức độ ưu tiên thấp nhất xuất hiện ở cuối bảng. Trong một biểu thức, các toán tử có mức độ ưu tiên cao hơn sẽ được đánh giá đầu tiên.
Danh mục | Toán tử | Tính liên kết |
---|---|---|
Postfix | () [] ->. ++ - - | Trái sang phải |
Một lần | + -! ~ ++ - - (type) * &sizeof | Từ phải sang trái |
Multiplicative | * /% | Trái sang phải |
Phụ gia | + - | Trái sang phải |
Shift | <<>> | Trái sang phải |
Quan hệ | <<=>> = | Trái sang phải |
Bình đẳng | ==! = | Trái sang phải |
Bitwise VÀ | & | Trái sang phải |
Bitwise XOR | ^ | Trái sang phải |
Bitwise HOẶC | | | Trái sang phải |
Lôgic VÀ | && | Trái sang phải |
Logic HOẶC | || | Trái sang phải |
Có điều kiện | ?: | Từ phải sang trái |
Chuyển nhượng | =+ =- =* =/ =% =>> =<<=&=^ =| = | Từ phải sang trái |
Dấu phẩy | , | Trái sang phải |
Mã mẫu
#include <stdio.h> main() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 printf("Value of (a + b) * c / d is : %d\n", e ); e = ((a + b) * c) / d; // (30 * 15 ) / 5 printf("Value of ((a + b) * c) / d is : %d\n" , e ); e = (a + b) * (c / d); // (30) * (15/5) printf("Value of (a + b) * (c / d) is : %d\n", e ); e = a + (b * c) / d; // 20 + (150/5) printf("Value of a + (b * c) / d is : %d\n" , e ); return 0; }
Đầu ra
Value of (a + b) * c / d is : 90 Value of ((a + b) * c) / d is : 90 Value of (a + b) * (c / d) is : 90 Value of a + (b * c) / d is : 50