How is the expression x---y
parsed? Is it a legal expression?
This is related to operator precedence. Have a look at this table.
The decrement/increment operator has precedence over the arithmetic operations. It will be parsed as x-- - y
.
To correct my answer: The parser matches the longest token first, so --
is chosen over the arithmetic -
. Resulting in the expression being parsed as x-- - y
It's legal and parsed as x--
-
y
.
I believe the first two minus signs are interpreted as a post-decrement operator because it's the longest token following x
that is legal to appear. This leaves the third minus to play the role of subtraction.
This is in accordance with the Maximal Much Rule[1]
[1]. http://en.wikipedia.org/wiki/Maximal_munch
(x--)-y; Which compiler do you use? What are the types of x and y?
For all data types, it's parsed as x-- - y
. If it's some class
object then you have to define post decrement operator and minus operator, it will give compiler error if you just define pre decrement operator. That means, x-- - y
is forced in any case.