Thắc mắc về đoạn code sử dụng ++ prefix

Vì sao chạy xong thấy hiện giá trị của d = 21 nhỉ, đáng lẽ d = a + b =19 chứ ? Mn giải thích giúp mình với

#include <stdio.h>
#include <stdlib.h>
int main()

{
int a = 10;
int b = 9;

printf("c = %d\n", ++a + ++b);
printf("d = %d", a+b);
    return 0;
}

Vì a và b đã bị thay đổi rồi mà :smiley:

3 Likes

Bạn nhớ Markdown code lại cho mọi người dễ nhìn nhé ! Nhớ chỉnh luôn Category và tag phù hợp !
Cách post Code dùng Markdown trong Category Programming

Vì ở đây bạn dùng ++a++b, khiến cho giá trị của a và b tăng thêm 1 đơn vị.

4 Likes

Ơ nhưng mà a, b chỉ bị thay đổi trong cái printf tình c ở trên thôi chứ nhỉ, còn cái ở dưới là khác mà

Ok cảm ơn bạn đã nhắc, mình mới biết :slight_smile:
Nhuưng mà mình nghĩ là a, b chỉ bị thay đổi trong cái printf tính c ở trên thôi chứ nhỉ, còn cái ở dưới là khác mà

a của cả hai câu chỉ là một biến mà bạn :sweat_smile:b cũng vậy.

Bởi vì ++ luôn thay đổi giá trị của biến, còn nó trả về trước hay sau là chuyện khác.

2 Likes

Đầu tiên bạn khai báo và gán giá trị cho a = 10, b = 9. Trong lệnh printf đầu tiên, ++ prefix sẽ thêm 1 đơn vị vào hai biến a và b. Lúc này giá trị mới của hai biến sẽ lần lượt là a = 11 và b = 10 chứ không còn là giá trị ban đầu bạn gán nữa. Do đó kết quả sẽ là 21 chứ không phải 19.

++ Prefix nghĩa là lấy giá trị hiện tại của biến, tăng thêm 1 đơn vị, sao đó gán lại vào biến.

Thao khảo thêm về Prefix Increment và Decrement Operators tại đây.

3 Likes

Ok mình hiểu rồi, thanks mọi người nhé

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