您的位置:首页 > 编程语言 > C语言/C++

c语言运算符的优先级和结合性

2016-07-15 14:48 344 查看
优先级排列: 

1   ()   []   .   ->

2   !(逻辑非)   ~(按位取反)   +(正号)   -(负号)   ++   --   &(取址运算符)   *(取值运算符)   (type)(强制类型转换)   sizeof 

3   *(乘)   /   %(取余,见备注)

4   +(加号)   -(减号) 

5   >>   <<  

6   >   >=   <   <= 

7   ==   !=   

8   &(按位与)  

9   ^(按位异或)   

10  |(按位或)   

11  &&(逻辑与)

12  ||(逻辑或)

13  ?:

14   =   +=   -=   *=   /=   %=   |=   ^=   &=   >>=   <<=

15   ,

备注:取余(rem)和取模(mod)都是取余数,区别在于,取余的结果跟被除数同符号,取模的结果跟除数同符号。所以从概念上来讲,c语言中的%是取余符号。

优先级口诀:
括号成员排第一;        //括号运算符[]   (),成员运算符.   ->

全体单目排第二;        //所有的单目运算符

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

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

等与不等排第七;       //== 和!=

按位与异或;            //按位与(&)、按位异或(^)、按位或(|)    

排名八九十;  

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

十一跟十二;            

三目赋值与逗号;     //赋值运算符都有等号

倒数排名三二一。  

结合性:优先级为2、13、14的运算符是从右至左,其他都是从左至右。就记住:单目三目与赋值,从右到左相结合。

参考:https://www.slyar.com/blog/c-operator-priority.html

        http://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844700.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息