Có sự khác biệt lớn giữa phiên bản hậu tố (suffix) và tiền tố (prefix) của ++.
- Tiền tố (
++i): giá trịiđược tăng, và giá trị biểu thức là giá trị mới củai. Tức là tăng trước, gán cho biểu thức sau. - Hậu tố (
i++): giá trịiđược tăng, nhưng giá trị biểu thức là giá trị cũ củai. Tức là gán cho biểu thức trước, tăng biến sau.
Ví dụ
#include <iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++;
z = ++x;
cout << x << ", " << y << ", " << z;
return 0;
}
Kết quả
5, 3, 5
Tại sao? Chi tiết:
- Khởi tạo
x = 3 - Gán
ygiá trị từ biểu thứcx++, tức giá trịxtrước khi tăng, rồi mới tăngx. - Tăng
xrồi gánzgiá trị từ biểu thức++x, tức giá trịxsau khi tăng. - In các giá trị