Thắc mắc toán tử i++ và ++i

Mọi người cho mình hỏi.
Tại sao mình gán (1) được mà không gán (2) được ạ?

int i, a;
/// ...
++i=a;  // 1
i++a=a; // 2

Vì ++ sớm nên ++i trả về i ngay. Còn i++ thì phải trả về giá trị rồi mới tăng nên không gán được.

2 Likes

Vì (1) là một biểu thức gán gồm 2 bước: i = a++i (phép gán = trả về phần tử ở bên trái)
Còn (2) không phải là biểu thức gán, không thể tách thành dạng đúng cú pháp được.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?