1
Điểm khác nhau giữa ++i and i++ trong C/C++ là gì?
1
Bình Ðạt10 đã đăng:

Cho mình hỏi i++và ++i khác nhau như thế nào trong C/C++? Chúng ta nên dùng trường hợp nào là chính xác nhất bởi vì mình thấy hình như sử dụng hai cách này cho kết quả như nhau, đặc biệt là khi sử dụng với vòng lặp for?

thêm bình luận...
2
viétkâz50 đã đăng:

Sự khác nhau duy nhất giữa ++i và i++ đó là:

++i tăng giá trị của i, rồi sau đó trả về giá trị đã tăng của i, ví dụ,

int i = 1;
int j = ++i;
// j = 2 và i = 2

Điều này có nghĩa là trước khi gán giá trị của biến i vào biến j, thì giá trị của biến i đã được tăng lên 1 đơn vị và trả về giá trị đã tăng của i tiếp tục cho phép gán vào j, do đó j sẽ bằng 2.

i++ tăng giá trị của i, nhưng lại trả về giá trị ban đầu của i, ví dụ,

int i =1;
int j = i++;
// j = 1 và i = 2

Điều này có nghĩa là trước khi gán giá trị của biến i vào biến j, thì giá trị của biến i đã được tăng lên một đơn vị nhưng trả về giá trị ban đầu của i tiếp tục cho phép gán vào j, do đó j sẽ bằng 1.

Cơ chế hoạt động của ++i và i++ sẽ như thế nào qua 2 ví dụ trên?

  • ++i tính luôn trên giá trị ban đầu.
  • i++ tạo ra bản copy của giá trị ban đầu.

Cho nên đối với những kiểu dữ liệu phức tạp như lớp (class), ...v.v. có thể i++ sẽ lâu hơn một chút so với ++i bởi vì nó phải tạo ra bản copy của đối tượng.

Còn sử dụng ++i và i++ với vai trò là biến đếm trong vòng lặp for là như nhau cả về tốc độ thực thi và tăng dần i, bạn có thể tùy thích sử dụng trường hợp nào cũng được.

đã bổ sung 6.0 năm trước bởi
Avatar: viétkâz viétkâz50
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)