视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何记住C语言的运算符优先级
2025-09-28 02:04:56 责编:小OO
文档
如何记住C语言的运算符优先级

优先决

  括号成员第一; //括号运算符[]() 成员运算符. ->

  全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&

  乘除余三,加减四; //这个"余"是指取余运算即%

  移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等

  等于(与)不等排第七; //即== !=

  位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|) 

  "三分天下"十; 

  逻辑或跟与; //逻辑运算符:|| 和 &&

  十二和十一; //注意顺序:优先级(||) 底于 优先级(&&) 

  条件高于赋值, //三目运算符优先级排到 13 位只比赋值运算符和高//需要注意的是赋值运算符很多!

  逗号运算级最低! //逗号运算符优先级最低

  由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.

附录: c 语言运算符优先级表

关联操作符:()  []  ->  .

一元操作符:!  -  ++  --  +  -  (type)  *  &  sizeof

乘法操作符:*  /  %

加法操作符:+  -

移位操作符:<<  >>

关系操作符:<  <=  >  >=

“相等”比较:==  !=

位操作符:&

位操作符:^

位操作符:|

逻辑操作符:&&

逻辑操作符:||

条件操作符:?:

赋值操作符:=  +=  -=  等等

逗号:

如何记住C语言的运算符优先级?

学习C语言也有一段时间了,感觉C语言的运算符优先级很难记住,特别是对于初学者而言! 也许你会说没有记住没关系,用括号来改变优先级就可以了。但是很多情况下,因为依赖括号很容易导致程序可读性差,当然我不是反对加括号,只是提倡恰到好处。总之,还是记住好些,读别人的程序也方便点。近来翻看了一下优先级,感觉还是有规律可循的,拿来和大家分享,希望对大家有帮助! 先给出C语言的运算符优先级表: 

C语言运算符优先级表(由上至下,优先级依次递减)

运算符结合性
() [] -> . 自左向右 

! ~ ++ -- - (type) * & sizeof 自右向左 

* / % 自左向右 

+ - 自左向右 

<< >> 自左向右 

< <= > >= 自左向右 

== != 自左向右 

自左向右 

自左向右 

自左向右 

&& 自左向右 

|| 自左向右 

?: 自右向左 

Assignments 自右向左 

自左向右 

第一、像() [] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了。

第二、除了上面的四种运算符之外,接下来就是单目运算符,也就是! ~ ++ -- - (type) * & sizeof 了。记住它们的顺序可是自右向左啊!其实结合实例是很容易理解的,比如i++等。

第三、跟着就是双目运算符了,也是C语言运算符优先级中最容易让人混淆的地方了。其实也没有那么可怕,你认真观察就会发现。在双目运算符中,算术运算符优先级最高,然后是移位运算符,接着是关系运算符,再着是逻辑运算符。不过这边需要说的是,在关系运算符中,< <= > >=比== !=的优先级来得高。此外,在逻辑运算符中,与运算又比或运算优先级来得高,异或则处于二者之间。同样的,你可以类比出&&与||的优先级关系。

第四、在双目操作符之后,就是三目操作符了,没有什么好说的了。 

第五、然后是赋值操作符,你也许会把赋值操作符与三目运算符的优先级搞混。没有关系,我想你一定写过这样的语句(如果没有,请你记住!):max = (a>b)?a:b; ,从这个语句里,你就不难记住赋值运算符为什么比三目运算符的优先级低了! 

第六、逗号运算符是分割各个子语句的(感觉这么说有点不准确,不过我想大家会明白我的意思的),自然优先级最低了,我想这个应该不是很容易混淆的。

总结一下,按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符 特别在双目运算符中,按运算符优先级从高到低:算术运算符->移位运算符->关系运算符(其中== 和 !=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻辑与-〉逻辑或)!

    下载本文

显示全文
专题