Toán tử trong C

Mọi người cho em hỏi câu này tại sao ra đáp án này được không ạ?
Em có tìm hiểu về g++ và ++g nhưng vẫn k hiểu sao nó ra dk đáp án này nữa?

Nói một cách đơn giản bằng ví dụ sau

g = 0;
x = ++g;
tương đương
g = 0;
g = g + 1;
x = g;

Còn
g = 0
x = g++;
tương đương
g = 0;
x = g;
g = g + 1;

Nếu mà như vậy thì lúc in ra màn hình theo thứ tự g, ++g, g++ thì nó sẽ phải ra là 1 , 2, 2 chứ bạn.
In g: g =1 nên in ra 1
In ++g: g= g + 1;. Sau đó in g là ra 2.
In g++: In ra 2. Sau đó g = g + 1;

Mình cũng đồng ý với bạn. Nhưng sao lại vậy nhỉ :smile:

Đã có rất nhiều tranh cãi về vấn đề này, mà mình nghĩ là do compile nó quyết định :smile:

Bạn có thể lấy 1 ví dụ được không bạn?

Undefined behavior. Cái này không thể nghĩ bàn :smiley:

Các bác có thể cho em một ví dụ so sánh giữa 2 compiler khác nhau dk k ạ?

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