&&的优先级

时间:2021-07-07 17:43

&&的优先级高于||

简单点说就是 优先级相当于加括号,  但是运行顺序还是从左到右.

比如 if(  a&&b || c &&d )  相当于 if(  (a&&b)||(c&&d)       )



||逻辑或运算,在“||”运算符的表达式中,执行顺序是从左到右。如果其中有一个子表达式为True,那么整个表达式的值就为True,而且在该子表达式后面的式子不必再计算。
&&逻辑与运算,在“&&”运算符的表达式中,执行顺序是从左到右。如果其中有一个为False,那么整个表达式的值就为False,而且在该子表达式后面的式子不必再计算。

另外运算符优先级&&高于||。

你的代码中if(a==1||a==2&&b==3||b==4)相当于if(a==1||(a==2&&b==3)||b==4),当输入1,23132后,a=1,b=23132,在if(a==1||a==2&&b==3||b==4)中第一个判别式a==1就为True,后面的不管结果是什么,整个表达式结果依然为True,所以照样输出了

void main() {
  Test();   //输出 
}

class Test {
  Test() {
    if (false || true && foo()) {
      print("执行官");
    }
  }

  static bool foo() {
    print('boo');
    return true;
  }
}