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

Khác biệt giữa ++i và i++ trong C

++ và -- là toán tử một ngôi (unary). Cả tiền tố (++i) và hậu tố (i++) đều tăng biến lên 1. Khác biệt nằm ở giá trị của biểu thức.

Khi dùng độc lập

i = 5; i++;  // i = 6
i = 5; ++i;  // i = 6
// Kết quả cuối cùng giống nhau

Khi dùng trong biểu thức/gán (ưu tiên toán tử)

Biểu thứcGiá trị biểu thứcGiá trị i sau
j = i++;Giá trị cũ của ii + 1
j = ++i;Giá trị mới của ii + 1

Ví dụ minh họa

#include <stdio.h>
int main() {
    int i = 5, j;
    j = i++;
    printf("Hau to: i=%d, j=%d\n", i, j); // i=6, j=5
    i = 5;
    j = ++i;
    printf("Tien to: i=%d, j=%d\n", i, j); // i=6, j=6
    return 0;
}
Hau to: i=6, j=5
Tien to: i=6, j=6

Quy tắc ưu tiên: ++i (prefix) có độ ưu tiên cao hơn =. i++ (postfix) có độ ưu tiên cao hơn = nhưng giá trị biểu thức là giá trị trước khi tăng.

Khuyến nghị: Dùng ++i khi không cần giá trị cũ (tiết kiệm bản sao tạm, thói quen tốt cho iterator C++).