Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Khi nào nên dùng i++ hay ++i trong C++?

Toán tử tăng (increment) được dùng để tăng giá trị lên 1, trong khi toán tử giảm (decrement) làm ngược lại - giảm giá trị đi 1.

Tiền tố ++i (Pre-increment)

Giá trị được tăng lên 1 trước khi gán cho biến hoặc sử dụng trong biểu thức.

Hậu tố i++ (Post-increment)

Giá trị được tăng lên 1 sau khi gán cho biến hoặc sử dụng trong biểu thức.

Cú pháp

++ten_bien;  // Tiền tố
ten_bien++;  // Hậu tố

Ví dụ minh họa

#include <iostream>
using namespace std;

int main() {
    int i = 5;
    cout << "Giá trị tiền tố: " << i;
    while(++i < 10)
        cout << "\t" << i;
    
    cout << "\nGiá trị hậu tố: " << i;
    while(i++ < 15)
        cout << "\t" << i;
    
    return 0;
}

Kết quả

Giá trị tiền tố: 5 6 7 8 9
Giá trị hậu tố: 10 11 12 13 14 15

Trong chương trình trên, biến i kiểu nguyên được tiền tố tăng cho đến khi giá trị nhỏ hơn 10, sau đó hậu tố tăng cho đến khi nhỏ hơn 15. Lưu ý rằng với tiền tố, giá trị in ra là giá trị sau khi đã tăng, còn hậu tố in ra giá trị trước khi tăng.

Khi nào dùng cái nào?

  • ++i: Khuyến nghị cho vòng lặp và khi không cần giá trị cũ. Hiệu quả hơn một chút vì không tạo bản sao tạm thời.
  • i++: Cần thiết khi bạn cần sử dụng giá trị hiện tại trước khi tăng.

Với các kiểu dữ liệu nguyên thủy (int, char...), trình biên dịch hiện đại thường tối ưu hóa cả hai giống nhau. Tuy nhiên với iterator hoặc đối tượng phức tạp, ++i hiệu quả hơn do tránh tạo đối tượng tạm.