您的位置:首页 > 编程语言 > C语言/C++

C语言算符优先级记忆之我的观点

2018-03-11 11:33 330 查看


一共有十五个优先级: 同一优先级的运算符,运算次序由结合方向所决定

  ()  []  .  ->        (括号,成员排第一)
 !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof       (单目运算排第二)
 * / %         (乘除余三)
 + -             (加减四)
>> <<          (移位五)
 > >= < <=     (关系六)
 == !=           (等于不等排第七)
&             (位“与”) 
^               (”异或“)
 |               (和位"或")三分天下八九十
&&            (逻辑 ”与“)
||                (和”或“)十一和十二
?:                (条件运算符)
 =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=    (条件高于赋值)
 ,             (逗号优先级最低)
        如果真的把15个等级都一清二楚记住了,我觉得你肯定会非常抓狂,再说也不可能完完全全非常精确地记住,因为人的记忆力是会衰减的,而且,每一门语言的运算符优先级都不太一样,记住C的,就会和Java,JavaScript,Python的搞混,说不定得不偿失。

        那么我们平常编程,如果不敢保证哪个算符优先级更高,我们就用()括号吧。但是,如果我们不适当地记住一些优先级,那么看别人的不爱带括号的代码,那就容易看不懂。

        总而言之,我们有必要适当地记一下运算符的优先等级。

我们看图,会发现:

最重要的一句话:括号和成员算符>单目>双目>三目(?:)>赋值运算符
再看双目运算符里的,我们最常用的无非就是乘、除、模、加、减了,既然在双目运算符里,最常用的符号是这些,那么其优先级也应该是最高的嘛。语言的设计要方便开发,最常用的符号优先级更高,可以减少我们使用()括号的频率,有利于开发,可读,想想也是非常通达情理、人性化的事情嘛,这个应该很好记住吧,哈哈。
接下来就是移位运算符和关系运算符啦,>> 、<<   高于 < 、> 、<= 、>
4000
;=
 
高于   == 、!= ,我有一个不成文的记忆技巧那就是,你看到>和<这个两个符号,它的数量越多,等级就越高,你看<<和>>有两个,< 、> 、<=
、>=只有一个,而==和!=有零个。
再往下就是逻辑运算符了,按位与、按位异或、按位或(&、^、|)  高于    逻辑与、逻辑或(&&、||) 
 ,按位X的运算速度远远快于逻辑X的运算速度,所以算符优先等级也更大。注意(按位非 !  并不在按位X这里,因为按位非是单目运算符哦,要记住!)
然后就是按位与>按位异或>按位或>逻辑与>逻辑或,这个就用你自己的方法来记住呗,我也没啥好方法哈....
最后的最后,就是赋值运算符啦,既然是赋值,那可以这样想,我们正常来说,是不是应该把所有的运算都算完了,该做的事情都做了,最后才进行赋值呢?哈哈,没错,赋值运算符的等级是倒数第二低的,等级最低的是逗号(,)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: