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

2019-12-27 18:54发布

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

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

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

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

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

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

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

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

第五条是 单目里面的优先度,和2,3,4里面的优先度是一样一样的,赋值里面的优先度也跟2,3是一样一样的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
babysnail
1楼-- · 2019-12-27 19:46
本帖最后由 babysnail 于 2017-4-6 11:45 编辑

第三写错了, 搞错了,是后面的写错了
TBG3
2楼-- · 2019-12-28 00:59
babysnail 发表于 2017-4-6 11:43
第三写错了, 应该是逻辑运算优先于关系运算

你这是美好的期望啊。
babysnail
3楼-- · 2019-12-28 05:56
优先级从上到下,然后看结合方向,不好记。顺便再看看
运算符     解释                           结合方式
() [] -> . 括号(函数等),数组,两种结构成员访问 由左向右
! ~ ++ -- + -  * & (类型) sizeof否定,按位否定,增量,减量,正负号,
间接,取地址,类型转换,求大小          由右向左
* / %    乘,除,取模                   由左向右
+ - 加,减                              由左向右
<< >> 左移,右移                         由左向右
< <= >= > 小于,小于等于,大于等于,大于 由左向右
== != 等于,不等于                      由左向右
& 按位与                                由左向右
^ 按位异或                              由左向右
| 按位或                                由左向右
&& 逻辑与                               由左向右
|| 逻辑或                               由左向右
? : 条件                                由右向左
= += -= *= /=  &= ^= |= <<= >>=各种赋值 由右向左
, 逗号(顺序) 由左向右
yoz
4楼-- · 2019-12-28 06:54
乘除大于加减,别的用括号。
wye11083
5楼-- · 2019-12-28 11:54
 精彩回答 2  元偷偷看……
kelp
6楼-- · 2019-12-28 15:56
加括号最好

一周热门 更多>