运算符优先级小记

今天帮某某人看一道题目,突然想到运算符的优先级的一些问题,这里参考了一篇(点击进入)文章,结合自己的一些领悟小做整理(侵权删)

  • 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
  • 优先级高的先执行

在实际运算中,太过于复杂时,我们可以找到优先级最低的运算符,把不属于这个运算符的元素分别都括起来,每个括号里再去找优先级最低的,括号都括上,方便理解它怎么运算的

  例如,false && true || true 中 “||” 的优先级最低,这样括括号:( false && true ) || true ,显然结果是 true;同理 true || true && false 等价于 true || (true && false) ,显然一样的结果    

  

  又例如,m<n ? x : a+3 中 条件运算符 优先级最低,括上括号,等价于:(m<n) ?(x) :(a+3) ,可以看一下 图示测试用例

  【条件运算符 表达式:表达式1?表达式2:表达式3 

         运算逻辑:先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。】

  

  • 有一些需要特别注意的是,大多数运算符结合性是从左到右,但也有从右至左结合的,如赋值运算符

  从左到右的经典例子:a+++b 等价于 (a++)+b;

  

  从右到左的赋值运算符经典例子:

    int a, b=1, c=2; 

    a=b=c; //这里表达式中最右边的操作最先执行,然后从右到左依次执行。先赋值给b,然后b再赋值给a,最终a的值是2。于是:a=2,b=2,c=2

   

 放一张优先级的表(百度得哈哈),方便查阅

  

  

猜你喜欢

转载自www.cnblogs.com/yulia1702/p/priority_operator.html