Mylące pierwszeństwo operatora: a << b + c << d

Operator+ ma wyższy priorytet niż<< w C ++, co oznaczałoby to wyrażeniea << b + c << d należy ocenić jako:

a << (b + c) << d

Ale tonie ma sensu. Więcej sensu można uzyskać, podążając

a << (b + (c << d))

Ale to narusza pierwszeństwo+ koniec<<, prawda? W jaki sposób kompilatory oceniają część „ma sens”?

AKTUALIZACJA: Zadając pytanie pomyślałem, że kompilator używa drugiego wariantu, dlatego zastanawiam się, jak kompilator doszedł do tej oceny. W rzeczywistości pierwszy jest używany i jest poprawny.

questionAnswers(4)

yourAnswerToTheQuestion