Tăng/giảm sau
Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 19 trên 74.
Trong bài học trước, chúng ta đã tìm hiểu toán tử tăng (++) và giảm (--). Các toán tử này có hai dạng: tiền tố và hậu tố.
Dạng tiền tố được viết trước biến (ví dụ: ++x hoặc --x), còn dạng hậu tố được viết sau biến (ví dụ: x++ hoặc x--).
Biết nên dùng dạng nào rất quan trọng trong thực tế. Ví dụ, trong một trò chơi, bạn có thể cập nhật điểm số của người chơi bằng score++ sau mỗi lần đánh trúng, hoặc dùng --lives để cập nhật ngay số mạng đã mất trước khi kiểm tra xem trò chơi đã kết thúc chưa. Trong vòng lặp, việc chọn dạng tiền tố hay hậu tố có thể ảnh hưởng đến giá trị được dùng trong biểu thức trước hoặc sau khi cập nhật.
Sự khác biệt giữa hai dạng này rất nhỏ nhưng quan trọng:
- Dạng tiền tố: Tăng/giảm biến rồi trả về giá trị mới.
- Dạng hậu tố: Trả về giá trị hiện tại của biến rồi tăng/giảm biến.
Đây là một ví dụ minh họa sự khác biệt:
int x = 5;
int y = x++;
// y = 5, x = 6 (hậu tố: y nhận giá trị ban đầu, sau đó x tăng thêm 1)
int a = 5;
int b = ++a;
// b = 6, a = 6 (tiền tố: a tăng thêm 1 trước, sau đó b nhận giá trị mới)Trong trường hợp đầu tiên, y được gán giá trị ban đầu của x (5), sau đó x tăng lên 6. Trong trường hợp thứ hai, a tăng trước, sau đó giá trị mới của nó (6) được gán cho b.
Logic tương tự cũng áp dụng cho toán tử giảm:
int x = 5;
int y = x--;
// y = 5, x = 4 (hậu tố: y nhận giá trị ban đầu, sau đó x giảm đi 1)
int a = 5;
int b = --a;
// b = 4, a = 4 (tiền tố: a giảm đi 1 trước, sau đó b nhận giá trị mới)Thử thách
Người mớiBạn được cung cấp đoạn code khởi tạo x, y và z. (Đừng xóa những dòng này!)
Nhiệm vụ của bạn là dùng các toán tử tăng/giảm để thực hiện những thao tác sau, theo thứ tự này:
- Dùng toán tử tăng hậu tố để gán giá trị hiện tại của
xchoa, sau đó tăngx. - Dùng toán tử giảm tiền tố để giảm
y, rồi gán giá trị mới của nó chob. - Dùng toán tử giảm hậu tố để gán giá trị hiện tại của
zchoc, sau đó giảmz.
Sau khi thực hiện các thao tác này, hãy in giá trị của a, b, c, x, y và z ra bảng điều khiển theo định dạng sau:
a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]Tự làm thử
#include <iostream>
int main() {
int x = 10;
int y = 20;
int z = 30;
int a, b, c;
// Viết code của bạn bên dưới
// Đừng thay đổi các dòng bên dưới
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
std::cout << "z: " << z << std::endl;
return 0;
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Các toán tử, phần 1
Toán tử số họcToán tử moduloTăng/giảmTăng/giảm sauRút gọn phép toán số họcToán tử so sánhSo sánh chuỗiTự luyện tập: Trình biên dịch C++ online