转自: http://blog.csdn.net/huangblog/article/details/8271791
虽然在日常使用中,添加括号来明确规定运算符优先级是一种常识,但毕竟学校考试就喜欢考这些。没办法了,改变自己比改变世界更容易。
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
总结:
括号,和结构体的访问 最高
逗号表达式最低,其余的根据使用习惯差别不大
C语言运算符优先级
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
--
()
圆括号
(表达式)/函数名(形参表)
--
.
成员选择(对象)
对象.成员名
--
->
成员选择(指针)
对象指针->成员名
--
2
-
负号运算符
-表达式
右到左
单目运算符
~
按位取反运算符
~表达式
++
自增运算符
++变量名/变量名++
--
自减运算符
--变量名/变量名--
*
取值运算符
*指针变量
&
取地址运算符
&变量名
!
逻辑非运算符
!表达式
(类型)
强制类型转换
(数据类型)表达式
--
sizeof
长度运算符
sizeof(表达式)
--
3
/
除
表达式/表达式
左到右
双目运算符
*
乘
表达式*表达式
%
余数(取模)
整型表达式%整型表达式
4
+
加
表达式+表达式
左到右
双目运算符
-
减
表达式-表达式
5
<<
左移
变量<
左到右
双目运算符
>>
右移
变量>>表达式
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
<
小于
表达式
<=
小于等于
表达式<=表达式
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
8
&
按位与
表达式&表达式
左到右
双目运算符
9
^
按位异或
表达式^表达式
左到右
双目运算符
10
|
按位或
表达式|表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1?
表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
--
/=
除后赋值
变量/=表达式
--
*=
乘后赋值
变量*=表达式
--
%=
取模后赋值
变量%=表达式
--
+=
加后赋值
变量+=表达式
--
-=
减后赋值
变量-=表达式
--
<<=
左移后赋值
变量<<=表达式
--
>>=
右移后赋值
变量>>=表达式
--
&=
按位与后赋值
变量&=表达式
--
^=
按位异或后赋值
变量^=表达式
--
|=
按位或后赋值
变量|=表达式
--
15
,
逗号运算符
表达式,表达式,…
左到右
--
C语言中操作符的优先级大全
C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. OperatorsAssocia ...
【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】
原文:[ c语言中无符号和有符号的加法运算][深入理解]--[sky原创] 第一题 #include int main() { unsigned int a=6; i ...
《C语言深度剖析》学习笔记----C语言中的符号
本节主要讲C语言中的各种符号,包括注释符.单引号双信号以及逻辑运算符等. 一.注释符 注释符号和注释在程序的预编译期就已经被解决了,在预编译期间,编译器会将注释符号和注释符号之间的部分简单的替换成为空 ...
C语言中 有符号数、无符号数、整数溢出 (转)
#include void main() { int l=-1; unsigned int c=135; printf("%u\n",l+c); } ...
C语言中的符号总结
1.注释符号 //和/* ...*/ 2.续行符号 \ 3.转义符号 常用:\ ...
c/c++排坑(2) -- c语言中的符号重载
所谓的符号重载就是在不同的上下文环境里有不同的意义.甚至有些关键字也被重载而具有好几种意义,这也是C语言的作用域规则对程序员不那么清晰的主要原因. 本章内容摘自P37. 大家 ...
C语言中无符号与有符号问题
unsigned char a[5] = { 12,36,96,128,182 }; a[]范围为0~256. 数组中数都有效. char a[5] = { 12,36,96,128,182 }; a ...
001_C语言中运算符的优先级
总的来说就是: 1. 最高:单目运算符(() > * 解引用,&取地址,-取相反数,++等自增(或减)运算,!取反运算...); 2. 次之:双目运算符(算数运算符 > 移位运算符 ...
Java 自增(++) 和 C语言中自增的区别
在Java.c语言等高级语言中自增和自减的作用基本一致,都是变量自身加一或减一.下面我只对自增进行说明,自减是类似的. 自增运算符(++),有两种书写形式,一个是在变量前: ++ num; 另一种在变 ...
随机推荐
【CQOI2011】动态逆序对 BZOJ3295
Description 对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...
CI连接多个数据库
参考http://codeigniter.org.cn/user_guide/database/connecting.html手册 首先,在database.php中设置多个数据库的连接信息,这里命名 ...
jquery鼠标右键事件
$('body').live("mousedown",function(e){ $('body').bind("contextmenu",function(e) ...
在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文 ...
last与lastlog命令
lastlog 列出所有用户最后登录的时间和登录终端的地址,如果此用户从来没有登录,则显示:**Never logged in**last 列出用户所有的登录时间和登录终端的地址
【redis专题(4)】命令语法介绍之sorted_set
有序集合可以模拟优先级队列的实现 增 zadd key score1 value1 score2 value2 .. redis 127.0.0.1:6379> zadd stu 18 lily ...
JVM可支持的最大线程数
转微博,因为他也是转载 不知道原出处 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun J ...
在Silverlight中动态绑定页面报表(PageReport)的数据源
ActiveReports 7中引入了一种新的报表模型——PageReport(页面布局报表),这种报表模型又细分了两种具体显示形式: o 固定页面布局报表模型(FPL)是ActiveRepor ...
Spring高级装配(一) profile
Spring高级装配要学习的内容包括: Spring profile 条件化的bean声明 自动装配与歧义性 bean的作用域 Spring表达式语言 以上属于高级一点的bean装配技术,如果你没有啥 ...
【bzoj2741】[FOTILE模拟赛] L
Portal --> bzoj2741 Solution 突然沉迷分块不能自拔 考虑用分块+可持久化trie来解决这个问题 对于每一块的块头\(L\),预处理\([L,i]\)区间内的所有子区间 ...