Как анализируется выражение x --- y?Это законное выражение? - PullRequest
5 голосов
/ 13 апреля 2011

Как выражение x---y анализируется?Это законное выражение?

Ответы [ 4 ]

10 голосов
/ 13 апреля 2011

Это допустимо и анализируется как x-- - y.

Я считаю, что первые два знака минус интерпретируются как оператор после декремента, потому что это самый длинный токен после x, то естьзаконно появиться.Это оставляет третий минус, чтобы играть роль вычитания.Это соответствует правилу Максимальное количество [1]

[1].http://en.wikipedia.org/wiki/Maximal_munch

1 голос
/ 13 апреля 2011

Для всех типов данных он анализируется как x-- - y. Если это какой-то объект class, то вам нужно определить оператор после декремента и оператор минус , это даст ошибку компилятора, если вы просто определите оператор pre декремент . Это означает, что x-- - y принудительно в любом случае.

1 голос
/ 13 апреля 2011

Это связано с приоритетом оператора. Взгляните на этот стол .

Оператор уменьшения / приращения имеет приоритет над арифметическими операциями. Это будет проанализировано как x-- - y.

Чтобы исправить мой ответ: Сначала парсер сопоставляется с самым длинным токеном, поэтому -- выбирается из арифметики -. В результате чего выражение анализируется как x-- - y

0 голосов
/ 13 апреля 2011

(х -) - у;Какой компилятор вы используете?Какие бывают типы x и y?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...