什么是关联性(对于运营商)以及为什么重要?
更新:操作员关联性
对于运算符,关联性意味着当同一个运算符出现在一行中时,我们首先应用哪个运算符出现.在下面,让我们Q
成为运营商
a Q b Q c
如果Q
是左关联的,那么它的计算结果为
(a Q b) Q c
如果它是正确的关联,那么它的评估为
a Q (b Q c)
这很重要,因为它改变了表达式的含义.考虑具有整数运算的除法运算符,它是左关联的
4 / 2 / 3 <=> (4 / 2) / 3 <=> 2 / 3 = 0
如果它是右关联的,它将评估为未定义的表达式,因为您将除以零
4 / 2 / 3 <=> 4 / (2 / 3) <=> 4 / 0 = undefined
有三种相关性:
数学中的联想属性
编程语言中的操作顺序
CPU缓存中的相关性.
数学中的关联属性是运算符的属性,例如加法(+).此属性允许您重新排列括号而不更改语句的值,即:
(a + b) + c = a + (b + c)
在编程语言中,运算符的关联性(或固定性)是一种属性,用于确定在没有括号的情况下如何对相同优先级的运算符进行分组; 即每个操作员的评估顺序.这可能因编程语言而异.
在CPU缓存中,关联性是一种优化性能的方法.
它是相同优先级的运算符的求值顺序.左下或右下订单事宜.对于
3 - 2 - 1
如果是左至右,那么它是
(3 - 2) - 1
并且是0.如果它是左对,那么它是
3 - (2 - 1)
它是2.在大多数语言中,我们说减号运算符具有左向右相关性.
如果您指的是"运算符关联性" - 它是一种语言如何确定在没有括号的情况下如何对相同优先级的运算符进行分组.
例如,基于C语言的+和 - 运算符具有相同的优先级.当您编写一个使用它们的表达式(没有括号)时,编译器必须确定评估它们的顺序.
如果你写12 - 5 + 3,可能的评估包括:
(12 - 5)+ 3 = 10
12 - (5 + 3)= 4
根据您评估表达式的顺序,您可以获得不同的结果.在基于C语言中,+和 - 具有左关联性,这意味着上面的表达式将作为第一种情况进行评估.
所有语言都有强烈定义的优先级和关联性规则.您可以在此处了解有关C#规则的更多信息.维基百科上很好地涵盖了运算符关联性和优先级的一般概念.