c语言优先级和结合性
C语言的运算符众多,具有不同的优先级和结合性,我们将它们全部列了出来,方便大家对比和记忆:
| 
 优先级  | 
 运算符  | 
 名称或含义  | 
 使用形式  | 
 结合方向  | 
 说明  | 
|---|---|---|---|---|---|
| 
 1  | 
 []  | 
 数组下标  | 
 数组名[常量表达式]  | 
 左到右  | 
|
| 
 ()  | 
 圆括号  | 
 (表达式)/函数名(形参表)  | 
|||
| 
 .  | 
 成员选择(对象)  | 
 对象.成员名  | 
|||
| 
 ->  | 
 成员选择(指针)  | 
 对象指针->成员名  | 
|||
| 
 2  | 
 -  | 
 负号运算符  | 
 -表达式  | 
 右到左  | 
 单目运算符  | 
| 
 (类型)  | 
 强制类型转换  | 
 (数据类型)表达式  | 
|||
| 
 ++  | 
 自增运算符  | 
 ++变量名/变量名++  | 
 单目运算符  | 
||
| 
 --  | 
 自减运算符  | 
 --变量名/变量名--  | 
 单目运算符  | 
||
| 
 *  | 
 取值运算符  | 
 *指针变量  | 
 单目运算符  | 
||
| 
 &  | 
 取地址运算符  | 
 &变量名  | 
 单目运算符  | 
||
| 
 !  | 
 逻辑非运算符  | 
 !表达式  | 
 单目运算符  | 
||
| 
 ~  | 
 按位取反运算符  | 
 ~表达式  | 
 单目运算符  | 
||
| 
 sizeof  | 
 长度运算符  | 
 sizeof(表达式)  | 
|||
| 
 3  | 
 /  | 
 除  | 
 表达式/表达式  | 
 左到右  | 
 双目运算符  | 
| 
 *  | 
 乘  | 
 表达式*表达式  | 
 双目运算符  | 
||
| 
 %  | 
 余数(取模)  | 
 整型表达式/整型表达式  | 
 双目运算符  | 
||
| 
 4  | 
 +  | 
 加  | 
 表达式+表达式  | 
 左到右  | 
 双目运算符  | 
| 
 -  | 
 减  | 
 表达式-表达式  | 
 双目运算符  | 
||
| 
 5  | 
 <<  | 
 左移  | 
 变量<<表达式  | 
 左到右  | 
 双目运算符  | 
| 
 >>  | 
 右移  | 
 变量>>表达式  | 
 双目运算符  | 
||
| 
 6  | 
 >  | 
 大于  | 
 表达式>表达式  | 
 左到右  | 
 双目运算符  | 
| 
 >=  | 
 大于等于  | 
 表达式>=表达式  | 
 双目运算符  | 
||
| 
 <  | 
 小于  | 
 表达式<表达式  | 
 双目运算符  | 
||
| 
 <=  | 
 小于等于  | 
 表达式<=表达式  | 
 双目运算符  | 
||
| 
 7  | 
 ==  | 
 等于  | 
 表达式==表达式  | 
 左到右  | 
 双目运算符  | 
| 
 !=  | 
 不等于  | 
 表达式!= 表达式  | 
 双目运算符  | 
||
| 
 8  | 
 &  | 
 按位与  | 
 表达式&表达式  | 
 左到右  | 
 双目运算符  | 
| 
 9  | 
 ^  | 
 按位异或  | 
 表达式^表达式  | 
 左到右  | 
 双目运算符  | 
| 
 10  | 
 |  | 
 按位或  | 
 表达式|表达式  | 
 左到右  | 
 双目运算符  | 
| 
 11  | 
 &&  | 
 逻辑与  | 
 表达式&&表达式  | 
 左到右  | 
 双目运算符  | 
| 
 12  | 
 ||  | 
 逻辑或  | 
 表达式||表达式  | 
 左到右  | 
 双目运算符  | 
| 
 13  | 
 ?:  | 
 条件运算符  | 
 表达式1? 表达式2: 表达式3  | 
 右到左  | 
 三目运算符  | 
| 
 14  | 
 =  | 
 赋值运算符  | 
 变量=表达式  | 
 右到左  | 
|
| 
 /=  | 
 除后赋值  | 
 变量/=表达式  | 
|||
| 
 *=  | 
 乘后赋值  | 
 变量*=表达式  | 
|||
| 
 %=  | 
 取模后赋值  | 
 变量%=表达式  | 
|||
| 
 +=  | 
 加后赋值  | 
 变量+=表达式  | 
|||
| 
 -=  | 
 减后赋值  | 
 变量-=表达式  | 
|||
| 
 <<=  | 
 左移后赋值  | 
 变量<<=表达式  | 
|||
| 
 >>=  | 
 右移后赋值  | 
 变量>>=表达式  | 
|||
| 
 &=  | 
 按位与后赋值  | 
 变量&=表达式  | 
|||
| 
 ^=  | 
 按位异或后赋值  | 
 变量^=表达式  | 
|||
| 
 |=  | 
 按位或后赋值  | 
 变量|=表达式  | 
|||
| 
 15  | 
 ,  | 
 逗号运算符  | 
 表达式,表达式,…  | 
 左到右  | 
 从左向右顺序运算  | 
注:同一优先级的运算符,运算次序由结合方向所决定。
上面的表无需死记硬背,很多运算符的规则和数学中是相同的,用得多,看得多自然就记得了。如果你是在记不住,可以使用( )。
一些容易出错的优先级问题
上表中,优先级同为1 的几种运算符如果同时出现,那怎么确定表达式的优先级呢?这是很多初学者迷糊的地方。下表就整理了这些容易出错的情况:

这些容易出错的情况,希望读者好好在编译器上调试调试,这样印象会深一些。一定要多调试,光靠看代码,水平是很难提上来的。调试代码才是最长水平的。
c语言优先级和结合性的更多相关文章
- 【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析
		
零. 优先级 在C++ Primer一书中,对于运算符的优先级是这样描述的: Precedence specifies how the operands are grouped. It ...
 - [转]说说C语言运算符的“优先级”与“结合性”
		
补充自己的一点理解: 1.关于++i 与 i++的区别. ++i 和 i++如果是单独使用的语句,即二者后面均加上分号,或者其他单独使用的语句,没有任何区别.例如: for(i=0;i<100; ...
 - C语言左值,运算符的优先级以及结合性探讨
		
刚刚开始看一本书.<C陷阱与缺陷>,相信学习C语言的大家都对这本书有耳闻.今天看到了里面的贪心法则.也即在读到一个字符后,尽可能多的读入更多的字符,直到读入的字符组成的字符串已经不可能再组 ...
 - 说说C语言运算符的“优先级”与“结合性”
		
论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时.但从本质上看,仍然是概念理解上的偏差.本文试图通过对三个典型表达式的分析,集 ...
 - C语言运算符优先级及结合性
		
今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...
 - C语言的运算符的优先级与结合性+ASCII表
		
[0]README 0.1) 内容来源于 C程序设计语言, 旨在整理出C语言的运算符的优先级与结合性, 如下图所示(哥子 记了大半年都没有记住,也是醉了,每次都要去翻): Alert)以下内容转自:h ...
 - C语言运算符优先级和结合性一览表
		
所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁.这个其实我们在小学学算术的时候就学过,如1+4÷2. 但是C语言中的运算符已经远不止四则运算中的加减乘除了,还有其他很多运算符.当它们出 ...
 - [c语言]运算符的优先级与结合性
		
c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而 ...
 - C语言运算符优先级和结合性
		
运算符优先级和结合性 优先级 运算符 结合性 ...
 
随机推荐
- 树状数组求第K小值 (spoj227 Ordering the Soldiers && hdu2852 KiKi's K-Number)
			
题目:http://www.spoj.com/problems/ORDERS/ and pid=2852">http://acm.hdu.edu.cn/showproblem.php? ...
 - Android 4.0 x86安装教程 附带联网参数详细设置
			
Android 4.0 x86是一个可以支持在电脑上运行的Android 4.0系统.没有手机一样也可以体验Android 4.0.这对玩机爱好者们来说也算得上是一个不大不小的好消息.不过目前的And ...
 - Linux命令大全----系统管理相关命令
			
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了Linux命令大全----系统管理相关命令,并附有实例 一.安装 ...
 - 如何设置Win7不待机 Win7进入待机状态会断网的解决方法
			
电脑一旦进入待机状态后,会断网,应用将停止运行,因此需要设置电脑不待机来解决,这种情况需要挂一些游戏或者下载应用的时非常实用,下面就与大家分享下电脑不待机的设置方法,感兴趣的朋友可以参考下 有时候我们 ...
 - ElementUI表单验证使用
			
1.设计校验方式: 我们表单验证的rules一般封装一个单独的js文件,比如我之前写的这个博客: ElementUI使用问题记录:设置路由+iconfont图标+自定义表单验证 可以修改下:公共的校验 ...
 - JSP学习笔记(二):动作元素
			
与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用.JSP动作元素是用XML语法写成的. 利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面.为Java插件 ...
 - 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
			
最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各种防抓取的方法.不过道高一尺,魔高一丈,通过研究都是有漏洞可以钻的.下面的例子都是用PHP写的,不会用PHP来curl的孩纸先 ...
 - k-means聚类算法C++实现
			
原文:http://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069594.html Clustering 中文翻译作“聚类”,简单地说就是把相似的东 ...
 - SVG Viewer 3.0安装发现SVG Viewer License.txt无法介入写入,安装失败
			
这几天研究SVG,发现"SVG Viewer 3.0安装发现SVG Viewer License.txt无法介入写入,安装失败"这个问题,晚上没找到解答的答案,后来被我们项目经理搞 ...
 - ffmpeg & mplayer & vlc 手册(转)
			
如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器 http://blog.sina.com.cn/s/blog_51396f890100nd91.html http://lanhy20 ...