01/10/2018, 10:44

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?

Henry viết 12:55 ngày 01/10/2018

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;
Blab Blab viết 12:53 ngày 01/10/2018

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;

Henry viết 12:50 ngày 01/10/2018

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

Phạm Minh Anh Hữu viết 12:53 ngày 01/10/2018

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

Blab Blab viết 12:48 ngày 01/10/2018

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

rogp10 viết 12:47 ngày 01/10/2018

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

Blab Blab viết 13:00 ngày 01/10/2018

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

Bài liên quan
0