zoukankan      html  css  js  c++  java
  • c/c++系列的运算符优先级总结

    经常写程序的时候,遇到运算符优先级的问题,令我汗颜的是,查书的次数挺多的……狠狠心,总结下。不过还要结合大量的编程实践来深入脑海。

    1、首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来的,人工设定了最高优先级,先算括号里的。

    2、非人为的,就是四个,函数调用(),[]数组下标,点运算符,间接->运算符。他们是优先级最高的,从左到右。拿->记忆结合性

    3、还有最起码知道,所有的单目运算符具有相同级别的优先级,记住是所有的。且记住都是从右到左

    比如:正负号+i和-i,自增自减++i和i--,取地值&a,取值*a,取类型大小运算符sizeof(int),逻辑非!a,逻辑按位取反~a,他们都是单目的运算符,且同时出现在表达式,运算顺序是右到左。

    4、知道一个规律,总体的运算符的优先级是  单目  >  双目  >  三目  >  赋值(包含复合赋值),除去几个特殊的。

    有了大前提,接下来是高潮!

    用网友总结的一个顺口溜加上我的改进,并平时结合实践一定能事半功倍的牢记!"张飞算计魏延,关羽,或者调戏妇女",什么意思呢?

    以下是优先级从高到底的顺序,而结合性根据常识就能判断:

    张飞=逻辑非(飞)运算符                                  !(提醒前面提到的单目,除那四个之外,单目是最高级别的,都是右到左,拿sizeof()来记忆提醒是右到左

    算计=算(算)术运算符                                     其次是+-*/%(小学数学就教的的顺序,先算*/%,再算加减,从左到右,小学就是这样的,没变)

    魏延=移位(魏)运算符                                    然后是移位运算符《 》 ,说1000 0011谁移4位,那肯定是左到右顺序计算,10000011<4,相当于除法

    关羽=关(关羽)系和位与(魏羽)运算符            接着是关系运算符,这里注意点:==和!=最后算,还有结合性左到右,其实根据常识也是如此。

                           然后是位与运算符&(~是单目)

    或者=位或                  其次位或|,当然如果写程序多,自然记得位异或^,不用想必夹在中间,学过组成原理就知道左到右的顺序

                            这才能轮的上逻辑与&&(羽),然后是逻辑或||(或者),结合性想到短路操作,就知道是左到右。

    调戏=(调)条件运算符?:(三目)      最后,条件运算符,也就是级别低的三目运算符   

              

    妇女=赋值和复合赋值             最后是,赋值运算符=和复合的赋值运算符,比如-=,+=,*=,/=,%=,&=,*=,《=,》=,|=,^=                           ……,都是右到左的结合性

    注意:

    1、如果程序段中的运算符很多,最好是括号括起来,不要太自信。

    2、c++的运算符,增加了几个,不过原c的,还是适用的。

    3、逻辑运算符&&和||和!计算的是整个表达式的逻辑真值,而位运算符的&和^和~和|,计算的是二进制数的每一位

    4、这个顺口溜要遵循大前提那4条,暨:

    人为最高是括号包住的

    自然最高是四个(),[],点,—>,左到右。

    逗号最低

    三级中,单目最高,且单目都是右到左。其次双目和三目。

    欢迎关注

    dashuai的博客是终身学习践行者,大厂程序员,且专注于工作经验、学习笔记的分享和日常吐槽,包括但不限于互联网行业,附带分享一些PDF电子书,资料,帮忙内推,欢迎拍砖!

  • 相关阅读:
    针对Python基本数据类型的操作
    Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from 这类问题的解决方法
    校招有感:计算机专业毕业生如何找工作(Java方向)
    我用了半年的时间,把python学到了能出书的程度
    Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
    Java字节码与反射机制
    以我的亲身经历,聊聊学python的流程,同时推荐学python的书
    面试时通过volatile关键字,全面展示线程内存模型的能力
    如果很好说出finalize用法,面试官会认为你很资深
    C# post json和接收json
  • 原文地址:https://www.cnblogs.com/kubixuesheng/p/4072608.html
Copyright © 2011-2022 走看看