从我读过的书中可以看出:
相关性可以有两种类型:
1-Left to Right
从左到右的关联性意味着左操作数必须是明确的。在什么意义上是不明智的?它不得参与任何其他子表达式的评估
2 - 从右到左
与上述相同。
现在请阅读以下代码:
progressBar
如上面的代码“d = 10/100 * p”所示,它遵循L - > R关联性,因为先前计算的p参与其他表达式的评估。
现在改变d “d = p * 10/100”这种情况正确地计算了折扣,但是高于1会给出零作为答案。
任何人都可以在上面的例子中解释相关性。
答案 0 :(得分:3)
乘法*
和/
都是从左到右的运算符。它们甚至具有相同的优先权。
因此,您的表达式可以在不改变其含义的情况下重写:
d = (10 / 100) * p
d = (p * 10) / 100
由于10 / 100
是结果为0
的整数除法,所以现在您可以看到差异。
答案 1 :(得分:-4)
C&C的算术*
(以及-
和+
)运算符是关联的,就像它们是数学一样:
这些行评估为true
:
A * B * C == (A * B) * C == A * (B * C);
(或A,B,C的任何排列,因为*
也是可交换的 - 即。x*y == y*x
为真)
然而,这一般情况并非如此:
A / B / C == (A / B) / C == A / (B / C);