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
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
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- C#运算符重载用法实例分析
- sql server 2008中的apply运算符使用方法
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C#中38个常用运算符的优先级的划分和理解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- 线程优先级