#cpp
Есть следующее валидное выражение на C++: a+++b; Как его должен понимать компилятор: как a + (++b); или как (a++) + b; Проверяем: #includeusing namespace std; int main() { int a = 1; int b = 10; int c = a+++b; cout << a << ' ' << b << ' ' << c; return 0; } 2 10 11 Почему это будет разобрано именно так? Как определяется предпочитаемый вариант интерпретации +++?
Ответы
Ответ 1
Есть такой принцип - лексема считывается по-максимуму (это называется правилом максимального поглощения). Т.е. читает первый плюс. Затем второй. Есть такая лексема - ++? Есть. Значит, это ++. Что там дальше? Еще плюс? Есть такая лексема - +++? Ах, в языке такой нет? Значит, это ++. Следующий плюс - начало новой лексемы... И приоритет операторов тут совершенно ни при чем.
Комментариев нет:
Отправить комментарий