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

2019-12-27 18:54发布

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

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

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

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

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

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

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

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

第五条是 单目里面的优先度,和2,3,4里面的优先度是一样一样的,赋值里面的优先度也跟2,3是一样一样的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
100条回答
TBG3
2020-01-06 17:58
中国的历史里面,逻辑一直没有发展起来。可以这么说:我们不太严谨。我们又有文学传统,用尽量少的词汇表达尽量多的意思。在文学上,这是好的。

但是在编程语言里面,这个东西叫做二义性。

就是一个语句里面有多种意思。这是编程语言竭力想阻止的。

一个语句就应该明白无误的是一个意思。

++ -- 会造成二义性。所以,用++ -- 尽量减少二义性。

各种规范已经很严谨了,但是再严谨的规范,也会产生二义性。

更何况,这世界上有很多不遵守规范的东西存在。

所以,熟悉规范,熟悉你的编译器,竭力避免二义性的产生。

因为程序是个很严谨的东西,一点点不同,最终会导致结果的大不同。

一周热门 更多>