Что вы подразумеваете под ассоциативностью слева направо в этом случае?

Я читал о << Оператор в C ++ из C ++ Primer.
В нем есть несколько строк, написанных о << оператор

соиЬ << «Некоторая строка» соответствует левому оператору ostream, результатом которого является сам объект cout (мы говорим, что оператор связывает слева направо).

Было бы здорово, если бы кто-то объяснил, в чем смысл вышеупомянутых строк.

3

Решение

Ассоциативность слева направо означает, что выражение неявно заключено в скобки следующим образом:

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

Другими словами, самая левая операция идет первой.

Напротив, назначение является ассоциативным справа в большинстве языков:

a = b = c + 5;

правопреемники c + 5 на «а» и «б», потому что оператор присваивания работает справа налево.

3

Другие решения

Это означает, что

cout << a << b

такой же как

(cout << a) << b

не

cout << (a << b)

Уточнить: cout << a часть выводит a, затем возвращает cout, поэтому результат (cout << a) может использоваться как левая сторона << b, Ассоциативность слева означает, что если в скобках выражение может означать что-то еще, предположим, что скобки установлены слева направо.

4

По вопросам рекламы [email protected]