我正在编写一个脚本语言,我想复制(很好的标准化)
C order of operations.
有一件我从来没有把握一个正式的概念,虽然是联想.为什么一些运算符组从左到右和其他从右到左?
有人可以给我几个例子,说明如果规则是从左到右还是与他们相反的一行代码如何看起来不同?或者为什么关联性是这样的,因为在我看来只是一个任意的选择,但我认为他们有理由.
另外,只是要注意,我知道联想是什么意思,我根本无法想到任何例子,从左到右(或反之亦然)比其他选择更好
解决方法
在大多数情况下,每个运算符具有对该操作者最有意义的关联性.
所有非赋值二元运算符都具有从左到右的关联性.这对于英语从左到右阅读的显而易见的原因是有用的,因此x y z的评估与它的阅读方式是一致的.此外,对于算术运算符,语义与我们对数学运算符的使用期望相符.
作业操作者具有从右到左的关联性.从左到右的任务将具有奇怪和意想不到的语义.例如,x = y = z将导致x的原始值为y,y的原始值为z.预期表达式完成后,所有三个变量都将具有相同的值.
前缀一元运算符具有从右到左的关联性,这是有道理的,因为最接近操作数的运算符是先被评估的,所以在〜!x中,首先评估!x,然后将〜应用于结果.这是非常奇怪的前缀运算符应用从左到右的关联性:说〜!x表示评估〜x然后应用!结果就是我们如何看待表情(或至少大多数人对表情的看法)完全相反.