Quy tắc
Biểu thức được đánh giá dựa trên độ ưu tiên (precedence) và kết hợp (associativity) của toán tử.
- Nếu có toán tử độ ưu tiên khác nhau → toán tử ưu tiên cao thực hiện trước.
- Nếu cùng độ ưu tiên → xem kết hợp: trái sang phải (left-to-right) hoặc phải sang trái (right-to-left).
Ví dụ ưu tiên
a = 10 - 5 * 2; // * cao hơn - → 5*2=10, 10-10=0 → a=0
Ví dụ kết hợp
- Phép toán số học (*, /, %, +, -): trái sang phải.
- Toán tử gán (=, +=...): phải sang trái.
- Toán tử một ngôi (++, --, !, ~...): phải sang trái.
Bảng ưu tiên (tóm tắt từ cao xuống thấp)
- () [] -> . (postfix)
- ++ -- ! ~ * & sizeof (unary, right-to-left)
- * / % (left-to-right)
- + - (left-to-right)
- << >> (left-to-right)
- < <= > >= (left-to-right)
- == != (left-to-right)
- & (bitwise AND)
- ^ (bitwise XOR)
- | (bitwise OR)
- && (logical AND)
- || (logical OR)
- ?: (ternary, right-to-left)
- = += -= *= /= %= &= ^= |= <<= >>= (right-to-left)
- , (comma, left-to-right)
(Hình ảnh bảng ưu tiên chi tiết trong bài gốc).