首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是运算符的结合性?为什么它很重要?

什么是运算符的结合性?为什么它很重要?
EN

Stack Overflow用户
提问于 2009-05-30 20:08:08
回答 10查看 61K关注 0票数 97

什么是结合性(对于运算符)?为什么它很重要?

已更新:运算符关联性

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-05-30 20:15:37

对于运算符,结合性意味着当相同的运算符出现在一行中时,我们首先应用哪个运算符。在下面的代码中,让Q作为运算符

代码语言:javascript
复制
a Q b Q c

如果Q保持关联,则它的计算结果为

代码语言:javascript
复制
(a Q b) Q c

如果它是右关联的,那么它的计算结果是

代码语言:javascript
复制
a Q (b Q c)

它很重要,因为它改变了表达式的含义。考虑使用整数运算的除法运算符,它是左关联的

代码语言:javascript
复制
4 / 2 / 3    <=>    (4 / 2) / 3    <=> 2 / 3     = 0

如果它是右关联的,那么它的计算结果将是一个未定义的表达式,因为您将除以零

代码语言:javascript
复制
4 / 2 / 3    <=>    4 / (2 / 3)    <=> 4 / 0     = undefined
票数 115
EN

Stack Overflow用户

发布于 2009-05-30 20:13:17

有三种关联性:

The Associative property in mathematics

Order of Operations in programming languages

Associativity in CPU caches.

数学中的结合属性是加法(+)等运算符的属性。此属性允许您在不更改语句的值的情况下重新排列括号,即:

代码语言:javascript
复制
(a + b) + c = a + (b + c)

在编程语言中,运算符的结合性(或固定性)是一个属性,它决定了在没有括号的情况下如何对具有相同优先级的运算符进行分组;即,每个运算符的计算顺序。这在不同的编程语言中可能有所不同。

在CPU缓存中,关联性是一种优化性能的方法。

票数 14
EN

Stack Overflow用户

发布于 2016-08-06 05:27:09

简单!!

代码语言:javascript
复制
Left Associative means we evaluate our expression from left to right

Right Associative means we evaluate our expression from right to left 

我们知道*、/和%具有相同的优先级,但根据关联性,答案可能会发生变化:

例如:我们有表达式:4*8/2%5

代码语言:javascript
复制
Left associative:   (4 * 8) / 2 % 5 ==> (32 / 2) % 5 ==> 16 % 5 ==> 1

Right associative:  4 * 8 /(2 % 5) ==>  4 * ( 8 / 2) ==> 4 * 4 ==> 16
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/930486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档