如何解决一元运算符的结合性
在树中构建一元运算符时,我通常将其绘制为父子树,例如:
-4
(-)
|
|
4
并且在树中绘制二元运算符时,它将有一个左右节点,例如:
2-4
-
/ \
2 4
在需要与多个运算符关联的地方对我来说很有意义,即使 =
也会有 lhs 和 rhs:
a=4
=
/ \
/ \
a (lv) 4 (rv)
但我真的不明白为什么一元运算符——解析树中只有一个子节点,会有结合性的概念。例如,为什么一元加号/减号是右结合的,而不仅仅是“非结合”或“无关紧要”?
这里也有一个有用的答案:https://stackoverflow.com/a/14084830/12283181。并且:
结合性规范对于一元运算符来说是多余的,只是为了完整性才显示:一元前缀运算符总是从右到左关联(sizeof ++*p is sizeof(++(*p))),一元后缀运算符总是关联从左到右(a[1][2]++ 是 ((a[1])[2])++)。请注意,关联性对于成员访问运算符是有意义的,即使它们与一元后缀运算符组合在一起:a.b++ 被解析 (a.b)++ 而不是 a.(b++)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。