众嘲炮:如何记C语言的运算符优先度

2019-12-27 18:54发布

本帖最后由 TBG3 于 2017-4-6 11:46 编辑

好像本论坛大多数程序员不记优先度,用括号来表达。当然是一种解决办法。但是你读别人的程序时呢? 人家不加括号你怎么办?

记的方法,扎实的办法就是死记,效果最好,这里就不做详细介绍了。

就介绍一种简单的方法,就五条。

一是单目运算符,包括数组,结构,++ -- ~ !之类,最优先。 因为神是唯一的神,所以好好敬服他吧。

第二是运算次优先,+ - * / <<  >>,因为资本主义世界,你要算清楚,不然肯定亏。注意这里面移位最不优先,因为人都不乐意地位变化。

第三是关系优先于逻辑,所以 > < == != 优先于与或非,与或非里面,个数多的,优先单个的,也就是说 & | 优先于 && ||

第四就是 赋值最不优先,因为等你都做出来之后,才会赋予你报酬。注意,因为 ? :里面有关系,所以在赋值里面最优先。

第五条是 单目里面的优先度,和2,3,4里面的优先度是一样一样的,赋值里面的优先度也跟2,3是一样一样的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
li_thomas
1楼-- · 2020-01-04 07:34
没意义,多用几个括号就解决了。还是好好学学编程思路
TBG3
2楼-- · 2020-01-04 08:09
takashiki 发表于 2017-4-6 19:35
事实上根本就没有代码效率的提高,反而是可读性大大降低了。谭浩强毕竟是那个年代的人,他当时出的书应该 ...

有个东西叫做读代码的效率。

那些认为括号可读性好的人,忽视了一个问题:对于精通优先度的人而言,根本提高不了效率。

而一边读代码一边反复查书的人,要用多少时间花在查书上呢?
wajlh
3楼-- · 2020-01-04 10:40
TBG3 发表于 2017-4-6 17:40
对很多人而言,C是吃饭的家伙。

如果不能了解细节,精确掌握,不过是得过且过而已。

熟练掌握的同学更应该写代码的时候加括号了,要准确的表达自己的意思,不要摸棱两可让别人去猜。
SCREA
4楼-- · 2020-01-04 14:54
admvip 发表于 2017-4-6 14:03
看图比较明白

你这太懒了,直接复制我的截图。

http://baike.baidu.com/link?url= ... fHLI4g4d7CyYlm1QX__
takashiki
5楼-- · 2020-01-04 18:51
 精彩回答 2  元偷偷看……
takashiki
6楼-- · 2020-01-05 00:17
本帖最后由 takashiki 于 2017-4-7 09:25 编辑
TBG3 发表于 2017-4-7 09:07
有个东西叫做读代码的效率。

那些认为括号可读性好的人,忽视了一个问题:对于精通优先度的人而言,根本 ...


然后请您给解释下 a  = b[a] + a++;的优先级关系,到底先算b[a]还是先算a++。
再比如:a = 1, a = a++ + a++ + a++; 请求出a。如果您能得出一个确定的标准答案,那么我服你,你大概可以制定C语言标准了。这个是规矩的“未定义行为”,不同的编译器有不同的实现。

一周热门 更多>