我給出了三個有限值(全部是整數)的變量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