Menu
CoddyTech

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)
challenge icon

Thử thách

Người mới

Bạ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:

  1. Dùng toán tử tăng hậu tố để gán giá trị hiện tại của x cho a, sau đó tăng x.
  2. Dùng toán tử giảm tiền tố để giảm y, rồi gán giá trị mới của nó cho b.
  3. Dùng toán tử giảm hậu tố để gán giá trị hiện tại của z cho c, sau đó giảm z.

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;
}
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch C++ online