Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đánh giá, ưu tiên và kết hợp (Evaluation, Precedence, Associativity) trong C

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)

  1. () [] -> . (postfix)
  2. ++ -- ! ~ * & sizeof (unary, right-to-left)
  3. * / % (left-to-right)
  4. + - (left-to-right)
  5. << >> (left-to-right)
  6. < <= > >= (left-to-right)
  7. == != (left-to-right)
  8. & (bitwise AND)
  9. ^ (bitwise XOR)
  10. | (bitwise OR)
  11. && (logical AND)
  12. || (logical OR)
  13. ?: (ternary, right-to-left)
  14. = += -= *= /= %= &= ^= |= <<= >>= (right-to-left)
  15. , (comma, left-to-right)

(Hình ảnh bảng ưu tiên chi tiết trong bài gốc).