GIÁO TRÌNH C++ - Trang 44

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.