在同一语句中编写引用声明和赋值

Dan*_*anS 2 c++ g++

在一个声明中编写引用声明和赋值是否有任何问题.我已经尝试使用gcc,它似乎工作.

int x = 10;
cout << "x = " << x << "\n";

int &y = x = 11;
cout << "x = " << x << "\n";
cout << "y = " << y << "\n";
Run Code Online (Sandbox Code Playgroud)

给了我预期的输出

x = 10
x = 11
y = 11
Run Code Online (Sandbox Code Playgroud)

这是否适用于大多数编译器或是否存在可移植性问题?

Jam*_*nze 5

在C++中,有一个赋值运算符,可以在任何表达式中使用(至少在原则上).请注意:

int& y = x = 11;
Run Code Online (Sandbox Code Playgroud)

第一=操作; 它是数据定义语法的一部分.接下来=是一个表达式,它必须导致类型的左值int.既然xint,x = 11有类型 int.并且内置赋值运算符的结果是左值,指的是作为赋值目标的对象,因此您已满足必要条件.

当然,这并不意味着它是好的代码.