代码很简单:
int Change(int& a)
{
a = 4;
return a;
}
int main()
{
int a = 10;
cout << Change(a) << a;
}
在C-Free中:输出:4 4
在VS2008中:输出:4 10
为什么呢?据我所知,我认为4 4是对的。
答案 0 :(得分:0)
简单地说,没有规则保证“4 4”是正确的。同样适用于“4 10”。
正如其他人在评论中提到的那样,你有一个未定义行为的例子。即使这是定义的行为,这样的代码也很难理解。所以我建议做
cout << Change(a);
cout << a;
或
int b = a;
cout << Change(a);
cout << b;
无论你真正想做什么。