#include <iostream>
int& addOne(int& x)
{
x += 1;
return x;
}
int main()
{
int x {5};
addOne(x) = x;
std::cout << x << ' ' << addOne(x);
}
Run Code Online (Sandbox Code Playgroud)
我目前正在学习左值和右值,并进行了一些实验,并做出了这似乎得到了相互矛盾的结果。 https://godbolt.org/z/KqsGz3Toe产生的输出为“5 6”,Clion 和 Visual Studio 也是如此,但是https://www.onlinegdb.com/49mUC7x8U产生的结果为“6 7”
我认为,因为addOne作为引用调用,所以尽管被称为左值,x它仍会显式地将 的值更改为 6。x正确的结果应该是什么?