Độ ưu tiên toán tử quyết định nhóm các hạng tử trong biểu thức. Toán tử * có độ ưu tiên cao hơn +. Ví dụ: x = 7 + 3 * 2 => x = 13.
Bảng độ ưu tiên (từ cao đến thấp) và kết hợp:
| Phân loại | Toán tử | Kết hợp |
|---|---|---|
| Postfix | () [] -> . ++ -- | Trái sang phải |
| Unary | + - ! ~ ++ -- (type)* & sizeof | Phải sang trái |
| Multiplicative | * / % | Trái sang phải |
| Additive | + - | Trái sang phải |
| Shift | << >> | Trái sang phải |
| Relational | < <= > >= | Trái sang phải |
| Equality | == != | Trái sang phải |
| Bitwise AND | & | Trái sang phải |
| Bitwise XOR | ^ | Trái sang phải |
| Bitwise OR | | | Trái sang phải |
| Logical AND | && | Trái sang phải |
| Logical OR | || | Trái sang phải |
| Conditional | ?: | Phải sang trái |
| Assignment | = += -= *= /= %= >>= <<= &= ^= |= | Phải sang trái |
| Comma | , | Trái sang phải |
Ví dụ
#include <stdio.h>
int main() {
int a = 20, b = 10, c = 15, d = 5, e;
e = (a + b) * c / d; // (30 * 15) / 5 = 90
printf("Value of (a + b) * c / d is : %d\n", e);
e = ((a + b) * c) / d; // 90
printf("Value of ((a + b) * c) / d is : %d\n", e);
e = (a + b) * (c / d); // 30 * 3 = 90
printf("Value of (a + b) * (c / d) is : %d\n", e);
e = a + (b * c) / d; // 20 + 30 = 50
printf("Value of a + (b * c) / d is : %d\n", e);
return 0;
}
Kết quả
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