Tại sao x++ + ++x ra 2?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x=10, y;
    y = x++ + ++x;
    printf("%d %d",y, x);
    return 0;
}

Em mới thi bài này xong, theo như em nhẩm thì y = 21 mà sao test lại trên code block lại ra y = 2 vậy ạ.

1 Like

y = 22 nhé.
y = x++ + ++x chính là y = 10 + 12;

3 Likes

ủa sao x sau bằng 12 bác, tưởng sau khi tính y thì x mới lên 12.

y = x++ (1) + ++x (2)
(1) vì ++ đằng sau là toán tử hậu tố nên nó tính toán trước rồi mới tăng giá trị lên sau //nên x vẫn = 10 và sau đó trả lại kết quả là x =11 cho phép tính sau
(2) vì ++ đằng trước là toán tử tiền tố nên nó tăng giá trị lên trước rồi mới thực hiện tính toán//nên x=11 ở phép toán trước và được cộng thêm 1 rồi mới thực hiện tính toán

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?