如何解析表达式x --- y?这是一个法律表达吗?

时间:2011-04-13 12:40:13

标签: c++ syntax

如何解析表达式x---y?这是一种法律表达吗?

4 个答案:

答案 0 :(得分:10)

这是合法的,并解析为x-- - y

我认为前两个减号被解释为后递减运算符,因为它是x后出现合法的最长令牌。这使得第三个减去扮演减法的角色。 这符合最大规则 [1]

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

答案 1 :(得分:1)

这与运营商优先级有关。看看这个table

递减/递增运算符优先于算术运算。它将被解析为x-- - y

要更正我的回答:解析器首先匹配最长的令牌,因此选择--而不是算术-。导致表达式被解析为x-- - y

答案 2 :(得分:1)

对于所有数据类型,它被解析为x-- - y。如果它是某个class对象,那么你必须定义 post decrement 运算符和减运算符,如果你只是定义 pre decrement <,它将给出编译错误/ strong>运营商。这意味着,x-- - y在任何情况下都是强制性的。

答案 3 :(得分:0)

(X - ) - ÿ;你用哪个编译器? x和y有哪些类型?