Hỏi về cout << x << ++x

Cho em hỏi tại sao output của 2 dòng lại khác nhau ạ?
Tại sao cách thức tương tự nhau lại cho kết quả khác nhau ạ?
Kỳ lạ quá!!!

#include <iostream>
using namespace std;

int change(int &x)
{
	x = 0;
	++x;
	return 1;
}

int main()
{
	int x = 5;

	cout << change(x) << " " << x << endl;

	cout << change(x) << " ";
	cout << x << endl;

	return 0;
}

Bạn vui lòng đăng code dưới dạng text thêm nữa nhé.


Đọc code của bạn mình thấy có liên quan gì đến dịch bit đâu, do hàm change đã thay đổi x rồi đó thôi.

Không rõ VS chạy code này kiểu gì, nhưng mà mình chạy trên ideone ra

1 1
1 1

(và mình nhẩm cũng ra toàn 1)

3 Likes

Dạ em cảm ơn. Vậy là do VS của e ạ?

Undefined Behavior!!!

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