在这种情况下,从左到右相关性是什么意思?

时间:2014-02-08 19:24:00

标签: c++ operators ostream associativity

我正在阅读<<来自C ++ Primer的c ++运算符 在其中,有一些关于<<<<操作

  

cout<< “some string”计算左手ostream运算符,表达式的结果是cout对象本身。(我们说运算符从左到右关联)。

如果有人解释上述线条的含义,那就太棒了。

2 个答案:

答案 0 :(得分:4)

这意味着

cout << a << b

相同
(cout << a) << b

不是

cout << (a << b)

澄清:cout << a部分输出a,然后返回cout,因此(cout << a)的结果可以用作<< b的左侧。左关联只是意味着括号是否可以使表达式意味着别的东西,假设括号从左到右设置。

答案 1 :(得分:3)

从左到右的关联性意味着表达式隐式括起来,如下所示:

(((cout << "foo") << "bar") << "baz")

换句话说,最左边的操作首先出现。

相比之下,在大多数语言中,赋值是正确关联的:

a = b = c + 5;

c + 5分配给“a”和“b”,因为赋值运算符从右向左工作。