在一个语句中编写引用声明和赋值是否有任何问题。我已经尝试使用gcc,它似乎工作。
int x = 10;
cout << "x = " << x << "\n";
int &y = x = 11;
cout << "x = " << x << "\n";
cout << "y = " << y << "\n";
给我预期的输出
x = 10
x = 11
y = 11
这是否适用于大多数编译器或是否存在可移植性问题?
答案 0 :(得分:5)
在C ++中,有一个赋值运算符,可以使用(至少在 原则)在任何表达中。请注意:
int& y = x = 11;
第一个=
不是运营商;它是数据语法的一部分
定义。此=
后面的内容是必须产生的表达式
在int
类型的左值。由于x
是int
,x = 11
具有类型
int
。内置赋值运算符的结果是左值,
指的是作为任务目标的对象,所以
你已经满足了必要的条件。
当然,这并不意味着它是好的代码。