首页 理论教育 运算符的优先级及结合性

运算符的优先级及结合性

时间:2023-11-20 理论教育 版权反馈
【摘要】:)>算术运算符>关系运算符>逻辑与(&&)>逻辑或(||)>赋值运算符4.关系运算符的优先级和结合性关系运算符的优先级如下:算术运算符优于关系运算符,关系运算符优于赋值运算符。

运算符的优先级及结合性

1.算术运算符的优先级和结合性

(1)算术运算符的优先级顺序从高到低为:括号>取正、取负>*、/、%>+、-,例如,ab*c相当于a-(b*c)。

在C语言的表达式中,只允许使用圆括号,不允许使用中括号大括号。出现多层括号时,先执行最内一层括号,接着执行外一层,直到最后执行最外层括号。例如,表达式a*((b+c)/d+e),首先计算内层括号的b+c,然后计算外层括号即除以d,并加上e,最后乘以a。

(2)算术运算符的结合性。

算术运算符的结合方向是“自左至右”,当操作数两侧的运算符的优先级相同时,则按规定的“结合方向”进行先左后右的顺序处理。例如:表达式(5+1)/2的运算结果是3,圆括号的优先级高于除号;表达式5+1/2的运算结果是5,除号的优先级高于加号;表达式5*-2的运算结果是-10,单目运算符的优先级高于乘号,这个表达式与5*(-2)等价。

2.赋值运算符的优先级和结合性

赋值运算符的优先级只高于逗号运算符,比任何其他运算符的优先级都低,且具有自右向左的结合性。因此,对于如下的表达式:

a=2+7/3;

由于所有其他运算符的优先级都比赋值运算符高,所以先计算赋值运算符右边表达式的值,再把此值赋给变量a。

3.逻辑运算符的优先级

逻辑运算符的优先级从低到高依次为:

||(逻辑或)<&&(逻辑与)<!(逻辑非)(www.xing528.com)

逻辑运算符与其他类型运算符比较时,有如下优先级关系:

逻辑非(!)>算术运算符>关系运算符>逻辑与(&&)>逻辑或(||)>赋值运算符

4.关系运算符的优先级和结合性

关系运算符的优先级如下:算术运算符优于关系运算符,关系运算符优于赋值运算符。其中<、<=、>、>=的优先级相同,且高于==和!=。==和!=的优先级相同。优先级相同时,关系运算符的结合方向是“自左向右”。

5.自加、自减运算符的优先级与结合性

自加1、自减1运算符均为单目运算,都具有右结合性,并且优先级比*、%和/都要高。

6.逗号运算符的优先级和结合性

在所有运算符中,逗号运算符的优先级最低。

逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算。即先计算表达式1,然后计算表达式2,依次进行,最后计算表达式n。最后一个表达式的值就是此逗号表达式的值。

例如:(i=3,i++,++i,i+5)这个逗号表达式的值是10,i的值为5。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈