Как выполняется выражение x --- y? Это юридическое выражение?

Как выполняется выражение x---y? Это юридическое выражение?

Ответ 1

Это законно и проанализировано как x-- - y.

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

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

Ответ 2

Это связано с приоритетом оператора. Посмотрите на эту таблицу .

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

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

Ответ 3

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

Ответ 4

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