Как выполняется выражение x---y
? Это юридическое выражение?
Как выполняется выражение x --- y? Это юридическое выражение?
Ответ 1
Это законно и проанализировано как x--
-
y
.
Я считаю, что первые два минус-знака интерпретируются как оператор пост-декремента, потому что это самый длинный токен, следующий за x
, который является законным для появления. Это оставляет третий минус, чтобы играть роль вычитания.
Это соответствует правилу Максимальное многократное правило [1]
Ответ 2
Это связано с приоритетом оператора. Посмотрите на эту таблицу .
Оператор декремента/приращения имеет приоритет над арифметическими операциями. Он будет анализироваться как x-- - y
.
Чтобы исправить мой ответ: Парсер сначала сопоставляет самый длинный токен, поэтому выбирается по арифметике -
. Результат в выражении, анализируемом как x-- - y
Ответ 3
Для всех типов данных он анализируется как x-- - y
. Если это некоторый объект class
, тогда вы должны определить оператора пост декремент и минус оператор, он даст ошибку компилятора, если вы просто определите пре декрет. Это означает, что x-- - y
принудительно в любом случае.
Ответ 4
(х -) - у; Какой компилятор вы используете? Каковы типы x и y?