小编Dap*_*ter的帖子

当将变量分配给对其自身的引用时,在修改然后由函数调用返回之间,结果应该是什么?

#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正确的结果应该是什么?

c++ sequence-points

22
推荐指数
1
解决办法
2064
查看次数

标签 统计

c++ ×1

sequence-points ×1