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

时间:2012-03-14 11:30:15

标签: c++ g++

在一个语句中编写引用声明和赋值是否有任何问题。我已经尝试使用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

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

1 个答案:

答案 0 :(得分:5)

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

int& y = x = 11;

第一个= 不是运营商;它是数据语法的一部分 定义。此=后面的内容是必须产生的表达式 在int类型的左值。由于xintx = 11具有类型 int。内置赋值运算符的结果是左值, 指的是作为任务目标的对象,所以 你已经满足了必要的条件。

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