我给出了三个有限值(全部是整数)的变量m,n,r。 现在我需要做m < -r和n < -r(分配m和n的值),并且我已经在“计算机编程艺术vol.1”中看过这些操作可以合并为 m < -n < -r替换号码
但是,上述说法并不意味着“给m赋值n,然后给n赋值r”。
在此先感谢。
我给出了三个有限值(全部是整数)的变量m,n,r。 现在我需要做m < -r和n < -r(分配m和n的值),并且我已经在“计算机编程艺术vol.1”中看过这些操作可以合并为 m < -n < -r替换号码
但是,上述说法并不意味着“给m赋值n,然后给n赋值r”。
在此先感谢。
赋值顺序是从右到左。因此,m<-n<-r
将被解释为:n<-r
然后m<-n
。
由于n
等于r
第一次赋值后,m<-n
和m<-r
是相同的。
作业=
运算符就像将右侧值分配给左侧一样。对于如
int a = 1 + 2;
这里先1+2
进行评估,并因为它遵循从右到左结合分配给a
。
现在,如果你有这样的事情
int a=b=2;
它再次如下从右到左的关联性。从右侧开始,b=2
被评估并分配给2
,然后b
被分配给a
。它的工作原理是这样的a=(b=2)
知道你的问题你有m<-n<-r
。这将如此工作m<-(n<-r)
您可以看到参考Operator Associativity
一个小小的疑问.............我知道操作符的相关性取决于我们使用的语言,...... ....所以有机会让我的问题有效。 – user27838
@ user27838是的,每种语言都有自己的操作员关联性。但是,您必须按照您使用的语言定义的关联性进行移动。您正在阅读的书和使用的语言(汇编)遵循从右到左的关联性进行分配。实际上大多数编程语言都是从右到左进行分配。 –
从右向左分配同事。所以有隐含的括号:'m < - (n < - r)' – shawnt00