首页 百科知识 逻辑运算中各运算符的优先顺序

逻辑运算中各运算符的优先顺序

时间:2024-10-17 百科知识 版权反馈
【摘要】:前已讲述,表达式的计算是与运算符的语义以及它们的优先级和结合性的规则有关,例如有单目运算符和双目运算符的区别,对增量运算符又有前缀和后缀形式等。掌握C语言中对各个运算符的优先级和结合性的规定。最后一个逻辑表达式语句:由于运算符&&的优先级高于运算符||,所以计算顺序自左至右,因而先做x,其结果是:x值变为0。

2.6.3 表达式的运算顺序

前已讲述,表达式的计算是与运算符的语义以及它们的优先级和结合性的规则有关,例如有单目运算符和双目运算符的区别,对增量运算符又有前缀和后缀形式等。

在很多情况下,C语言中表达式的计算顺序是不确定的。为了保证所需的计算顺序,应注意以下几点:

(1)掌握C语言中对各个运算符的优先级和结合性的规定。特别要注意区分具有同样外形而语义不同的运算符(如+、−、*、&等)。

(2)C语言中有3个运算符保证计算顺序严格自左至右进行,它们是:逻辑与“&&”、逻辑或“||”和逗号运算符“,”。例如,在表达式

  ++i||++j &&++k

中,按优先级关系,先做++i,仅当执行后i的值为非0时才会执行&&右边的运算,否则就不需要执行++j的运算,因为逻辑与的结果必然为0。

(3)在一个表达式中出现多个有不同优先级的运算符时,可以通过加圆括号的方式改变运算顺序,例如:

  (i+j)/(c*d)

(4)为了强调某部分是作为一个“整数”参与运算,可以引用“中间变量”,把“整体”的值赋给这个变量,然后由这个变量参与有关运算。例如:

  y= a+b

  x=y*k;

这样,就保证a+b是以整体身份参与运算。

例2-6 分析下面程序运行的结果。

img139

程序运行分析:

第一个赋值语句:赋值号右边表达式是条件表达式。按条件运算符“?:”规定的顺序,先计算“?”之前的表达式。首先计算最内层括号部分(19+60),得到值79;然后按运算优先级的高低依次执行下面的运算:79%4等于3,19%5等于4,60%5等于0,4+0等于4,3〉=4不成立,故把0赋给x。

第二个复合赋值语句:x+30等于30。由于“+=”和“=”有相同的优先级,其结合性自右至左,所以,先把30赋给z,然后把z的值与y的值相加,再赋予y,最后y的值为45。

最后一个逻辑表达式语句:由于运算符&&的优先级高于运算符||,所以计算顺序自左至右,因而先做−−x,其结果是:x值变为0。这样,“−−x&&++y”表达式的结果就已确定(为0),所以++y不再执行,y的值仍然为1;但对于运算符||来说,左分量为0,尚不能确定整个逻辑表达式的值,故执行其右边的表达式z++,最后z值变为2。

所以,程序运行结果如下:

  x=0

  y=45,z=30

  x=0,y=1,z=2

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

我要反馈