问题描述
|
如何解析表达式“ 0”?它是法律表达吗?
解决方法
合法,解析为
x--
-
y
。
我相信前两个减号被解释为减后运算符,因为它是出现在x
之后的最长标记。这使第三减号起到减法的作用。
这符合最大多数规则[1]
[1]。 http://en.wikipedia.org/wiki/Maximal_munch
,对于所有数据类型,其解析为“ 5”。如果它是一些“ 6”对象,则必须定义后减量运算符和减运算符,如果仅定义预减量运算符,它将给编译器错误。这就是说,无论如何都要强加“ 5”。
,这与运算符优先级有关。看看这张桌子。
减/增运算符优先于算术运算。它将被解析为x-- - y
。
更正我的答案:解析器首先匹配最长的令牌,因此选择--
而不是算术-
。结果表达式被解析为“ 5”
,(x-)-y;您使用哪个编译器? x和y的类型是什么?