C语言基础复习之二--运算符优先级、结合方向自编口诀

前题:这不是一个难题,但有时候会难道英雄好汉。都说我代码中可不会这么写,但面试官可不管这个。于是自己搜集网上资料,并编了一套口诀。

网络上已经有前人贴出了所有运算符的优先级和结合顺序,链接如下:

1 http://www.slyar.com/blog/c-operator-priority.html

已经很明了,其实简单归纳下:

就是括号和取值的优先级最高、单目运算第二、算术运算第三<算术内部还要排名>、位移操作第四、大小比较第五<内部再分高低>、位操作第六、逻辑操作第七、条件第8,它也是唯一的一个三目运算符、复合运算符第九、逗号第10。

结合顺序,除开单目运算、条件运算、复合运算是从右到左意外,其他的都是从左到右。按照这个脉络,自己整理了下:

 

 1"取值圈地"是天王,四大天王在第一:

    "[]""()""."" ->"    从左到右依次结合

2"屈居第二的人,总是孤芳自赏,9个单目列成行":
    
    "-""(强制转换)""++""--""*""&""!""~""sizeof" 从右到左依次结合

3"小李飞刀是高手,加减乘除亦探花""+""-""*""/""%"    从左到右依次结合,按照小学算术优先级结合即可。

4"东跑跑,西跑跑,位移操作、四季发财":
    ">>""<<"        从左到右

5"一较大小,五五分成"">"">=""<""<="        从左到右

6"非黑即白"降一格:
    "==""!="        从左到右

7"三分天下"位操作,"与最先、或最末、疑惑在中间":
    "&""^""|"        从左到右

8"易经八卦,大自然的逻辑""先与后或":
    "&&""||"    从左到右

9"九九归一有条件,你从东来我在西,不是随便可成佛""?:"    从右到左

10"十全十美便复合,临了别忘赋值号":
    "=""/=""*=""%=""+=""-=""<<="">>=""&=""^=""|="    从右到左

11、最后一名是"孙山":
    ","    从左到右

总计为下:

1"取值圈地"是天王,四大天王在第一:
2"屈居第二的人,总是孤芳自赏,9个单目列成行":
3"小李飞刀是高手,加减乘除亦探花"4"东跑跑,西跑跑,位移操作、四季发财":
5"一较大小,五五分成"6"非黑即白"降一格:
7"三分天下"位操作,"与最先、或最末、疑惑在中间":
8"易经八卦,大自然的逻辑""先与后或":
9"九九归一有条件,你从东来我在西,不是随便可成佛"10"十全十美便复合,临了别忘赋值号":
11、最后一名是"孙山":

12"孙山"之外还有言:自古都是男左女右,但这个世界总是充满奇葩--孤芳自赏的、讲条件的、刚刚复合的,偏要女左男右,张扬个性。

说明:

其中算术运算符,我归为一类,但它们遵循四则混合运算规则,凡是小学学习认真了,都会明白;
位移操作和位操作有小小的区别,平常可能说"位操作"就包括了"位移"操作和"位的双目操作"以及"位的单目操作";但这里已经给予了小小的区分,可能不是很合理,但确实有区别。

大小比较运算符比较奇葩,"==“、"!=”在书中没有划到大小比较里面去,这里要小小的注意。于是"非黑即白"优先级较之大小运算符矮了一级。

接下来就是复合运算符中,"="这个本不是复合运算符,但是它的优先级却是划分到了"复合运算符"同一个级别中,可能是K&R觉得它太孤独的原因吧。

然后就是左右结合顺序,其实已经没啥说的了,从右到左,就三个特例:单目、条件、复合。

 

同时,故意写了个"通假词":“疑惑"<=>"异或"。

 

-----------------------------------

代码中,许多前辈高人都已经给出了非常好的建议,关于碰到了运算符的时候怎么写怎么写--我们可以避免非常难读的代码出现。

但除非运气好不笔试就可以直接找到工作,抑或笔试的时候碰不上运算符的考察,也或者说,碰上了都是四则混合运算那么简单。这个概率是有的,它高于中500W的奖的概率;但同时碰上考察运算符的概率也是高于中500W的奖的概率。

-------------------------------------

运算符常见的考察,或者说我自己碰上的一些考察,见于下篇。

 

转载于:https://www.cnblogs.com/chineseboy/archive/2013/04/04/2999337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值