欢迎访问文稿网!

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

范文之家 分享 时间: 加入收藏 我要投稿 点赞

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

    2.6.3 表达式的运算顺序

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

    为了保证所需的计算顺序,应注意几点:

    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;

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

    img85

    img86

    程序运行分析:

    第一个赋值语句:赋值号右边表达式是条件表达式。按条件运算符?:规定的顺序,先计算?之前的表达式。首先计算最内层括号部分(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

221381
领取福利

微信扫码领取福利

微信扫码分享