[黑马训练营]IOS C语言运算符
2015-10-18 09:32
337 查看
C语言运算符优先级
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/1733f47d019ca7772de1a8ebfde70aa8)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/15ca50c927a6fa3db89a60e1c80feefc)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/cb0f27d8d7f79e39875bad1d7b7082ed)
运算符分8种:
赋值运算符、复合赋值运算符、算术运算符、逻辑运算符、关系运算、 条件运算符、逗号运算符和位逻辑运算符
最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。
( )圆括号
[ ]下标运算符号
->指向结构体成员运算符
.结构体成员运算符
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/0c0f553e5844058e1208625808245339.jpg)
2
第二级:!、~、++、--、-、(类型)、*、&、sizeof。
这一级都是单目运算符号,这一级的结合方向是从右向左。
比如出现*p++,这时*和++同级别,先算右边,再左边。
所以*p++等价于*(p++),而不是(*p)++。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/f480bf8990d54c41ee3754365180edbf.jpg)
3
第三级:+、-、*、/、%
这一级都是算术运算符,结合顺序和数学学习中一致的,先乘除取余数,后加减。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/c35dfdc98842c7d1dbf7b93da5fcbda8.jpg)
4
第四级:<<、>>
这是左移、右移运算符,位运算时可能需要用到。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/cbba5979ae642e5ce3bc2a3b67d51e5c.jpg)
5
第五级:<、<=、>、>=、!=、==
这些运算符也称为关系运算符,其中<、<=、>、>=高于!=、==。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/3eb5fe2cf9796bbf1f6cc11e364fab35.jpg)
6
第六级:&、^、|
这三个符号也是位运算符号,其中内优先级,&>^>|。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/cfa736462c92468f2d429defaf4f35c0.jpg)
7
第七级:&&、||
逻辑与&&优先级大于逻辑或||。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/7e98c3b7e26d630beffe0072c1d6dcb4.jpg)
8
第八级:? :
也称为条件运算符号,是C语言中唯一的一个三目运算符,结合顺序是从右往左。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/ab98c035398f79ab7f618bad51645a2b.jpg)
9
第九级:=、+=、-+、*=、/=、%=
这些运算符也叫做赋值运算符,除此之外,>>=、<<=、&=、^=、|=这些赋值运算符也在这一级别内,结合顺序是从右往左。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/4c7334bb457f669be1c010d31665f959.jpg)
10
最低级:,
逗号运算符也称为顺序求值运算符,在C语言中,运算级别最低。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/82159b02f6c6d5eac5a958ddbb1b8ed3.jpg)
总结
总的来说,初级运算符( )、[ ]、->、. 高于
单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于
逻辑运算符(不包括!) 高于 条件运算符 高于 赋值运算符
高于 逗号运算符。
位运算符的优先级比较分散。
除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左,其他都是从左至右。
运算符分8种:
赋值运算符、复合赋值运算符、算术运算符、逻辑运算符、关系运算、 条件运算符、逗号运算符和位逻辑运算符
最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。
( )圆括号
[ ]下标运算符号
->指向结构体成员运算符
.结构体成员运算符
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/0c0f553e5844058e1208625808245339.jpg)
2
第二级:!、~、++、--、-、(类型)、*、&、sizeof。
这一级都是单目运算符号,这一级的结合方向是从右向左。
比如出现*p++,这时*和++同级别,先算右边,再左边。
所以*p++等价于*(p++),而不是(*p)++。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/f480bf8990d54c41ee3754365180edbf.jpg)
3
第三级:+、-、*、/、%
这一级都是算术运算符,结合顺序和数学学习中一致的,先乘除取余数,后加减。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/c35dfdc98842c7d1dbf7b93da5fcbda8.jpg)
4
第四级:<<、>>
这是左移、右移运算符,位运算时可能需要用到。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/cbba5979ae642e5ce3bc2a3b67d51e5c.jpg)
5
第五级:<、<=、>、>=、!=、==
这些运算符也称为关系运算符,其中<、<=、>、>=高于!=、==。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/3eb5fe2cf9796bbf1f6cc11e364fab35.jpg)
6
第六级:&、^、|
这三个符号也是位运算符号,其中内优先级,&>^>|。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/cfa736462c92468f2d429defaf4f35c0.jpg)
7
第七级:&&、||
逻辑与&&优先级大于逻辑或||。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/7e98c3b7e26d630beffe0072c1d6dcb4.jpg)
8
第八级:? :
也称为条件运算符号,是C语言中唯一的一个三目运算符,结合顺序是从右往左。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/ab98c035398f79ab7f618bad51645a2b.jpg)
9
第九级:=、+=、-+、*=、/=、%=
这些运算符也叫做赋值运算符,除此之外,>>=、<<=、&=、^=、|=这些赋值运算符也在这一级别内,结合顺序是从右往左。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/4c7334bb457f669be1c010d31665f959.jpg)
10
最低级:,
逗号运算符也称为顺序求值运算符,在C语言中,运算级别最低。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/82159b02f6c6d5eac5a958ddbb1b8ed3.jpg)
总结
总的来说,初级运算符( )、[ ]、->、. 高于
单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于
逻辑运算符(不包括!) 高于 条件运算符 高于 赋值运算符
高于 逗号运算符。
位运算符的优先级比较分散。
除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左,其他都是从左至右。
相关文章推荐
- C语言名题精选百则:所有子集,字典子集,Gray子集
- zerglurker的c语言教程006——第一功能
- 实现一个函数,判断一个数是不是素数。
- 创建一个数组, 实现初始化数组、清空数组、完成数组元素的逆置。
- 实现一个函数判断year是不是闰年。
- 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入多少打印几乘几的乘法表
- C语言基础知识
- C++ Primer章课后编程问题
- [c++]LeetCode Median of Two Sorted Arrays问题
- 剑指offer第十八题【二叉树的镜像】c++实现
- Item 41:隐式接口与编译期多态 Effective C++笔记
- 关于C语言中Implicit declaration of function ‘XXXX’ is invalid in C99警告
- <<C++标准程序库>>中的STL简单学习笔记
- C++代码静态分析工具splint
- 基础c注意点(一)
- 浅析C++中String到WString的转换
- 浅析C++中String到WString的转换
- C++Study 指针详解
- [OOD-More C++ Idioms] 律师与委托人 (Attorney-Client)
- C语言 基础篇 printf