Cần phải cảnh báo bạn rằng cả hai toán tử tăng (
++
) và giảm (
--
) đều có quyền
ưu tiên lớn hơn toán tử tham chiếu (
*
), vì vậy biểu thức sau đây có thể dẫn tới
kết quả sai:
*p++;
*p++ = *q++;
Lệnh đầu tiên tương đương với
*(p++)
điều mà nó thực hiện là tăng
p
(địa chỉ ô
nhớ mà nó trỏ tới chứ không phải là giá trị trỏ tới).
Lệnh thứ hai, cả hai toán tử tăng (
++
) đều được thực hiện sau khi giá trị của
*q
được gán cho
*p
và sau đó cả q và p đều tăng lên 1. Lệnh này tương đương với:
*p = *q;
p++;
q++;
Như đã nói trong các bài trước, tôi khuyên các bạn nên dùng các cặp ngoặc đơn
để tránh những kết quả không mong muốn.