Оператор +
имеет более высокий приоритет, чем <<
в C++, который будет означать, что выражение a << b + c << d
следует оценивать как:Непонятный оператор старшинства: а << Ь + с << d
a << (b + c) << d
Но что не делает смысл. Больше смысла может быть получен при следующих
a << (b + (c << d))
Но это нарушает приоритет в +
над <<
, не так ли? Как компиляторы оценивают часть «делает ли смысл»?
ОБНОВЛЕНИЕ: При задании вопроса я думал, что второй вариант используется компилятором, поэтому мне интересно, как компилятор пришел к этой оценке. Фактически, первый используется, и он правильный.
[ссылка говорит + имеет более высокий приоритет, а затем <<] (http://en.cppreference.com/w/cpp/language/operator_precedence) запомнить '+' является математическим оператор, тогда как << побитовый оператор, который появляется в программировании. –
Составители не имеют никакого смысла, они просто компилируют –
в дополнение к ответу Дэвида/и моему первому комментарию, например: на любом языке программирования вы не можете найти, что '+' имеет более высокий приоритет перед '*' компилятором multiply, который не нарушает правила. –