Toán tử tăng ++ cộng 1 vào toán hạng, toán tử giảm -- trừ 1 từ toán hạng. Vậy:
x = x + 1; // tương đương x++;
x = x - 1; // tương đương x--;
Cả hai toán tử đều có thể đứng trước (tiền tố/prefix) hoặc sau (hậu tố/postfix) toán hạng.
x = x + 1; // có thể viết ++x;
Lưu ý: Khi dùng tăng/giảm như một phần biểu thức, có sự khác biệt quan trọng giữa tiền tố và hậu tố. Nếu dùng tiền tố, tăng/giảm diễn ra trước phần còn lại của biểu thức. Nếu dùng hậu tố, tăng/giảm diễn ra sau khi toàn bộ biểu thức đã được đánh giá.
- 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(x thành 4, y = 3) - Tăng
xrồi gánzgiá trị từ biểu thức++x, tức giá trịxsau khi tăng (x thành 5, z = 5) - In các giá trị