A【1-1-12】C语言运算符优先级与结合方向
来源:互联网 发布:php仓库管理系统 编辑:程序博客网 时间:2024/05/21 07:50
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
()
圆括号
(表达式)/函数名(形参表)
.
成员选择(对象)
对象.成员名
->
成员选择(指针)
对象指针->成员名
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++
单目运算符
--
自减运算符
--变量名/变量名--
单目运算符
*
取值运算符
*指针变量
单目运算符
&
取地址运算符
&变量名
单目运算符
!
逻辑非运算符
!表达式
单目运算符
~
按位取反运算符
~表达式
单目运算符
sizeof
长度运算符
sizeof(表达式)
3
/
除
表达式/表达式
左到右
双目运算符
*
乘
表达式*表达式
双目运算符
%
余数(取模)
整型表达式/整型表达式
双目运算符
4
+
加
表达式+表达式
左到右
双目运算符
-
减
表达式-表达式
双目运算符
5
<<
左移
变量<<表达式
左到右
双目运算符
>>
右移
变量>>表达式
双目运算符
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
双目运算符
<
小于
表达式<表达式
双目运算符
<=
小于等于
表达式<=表达式
双目运算符
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
双目运算符
8
&
按位与
表达式&表达式
左到右
双目运算符
9
^
按位异或
表达式^表达式
左到右
双目运算符
10
|
按位或
表达式|表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1? 表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量*=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
&=
按位与后赋值
变量&=表达式
^=
按位异或后赋值
变量^=表达式
|=
按位或后赋值
变量|=表达式
15
,
逗号运算符
表达式,表达式,…
左到右
从左向右顺序运算
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
注意:sizeof是运算符,不要与函数混淆。
二 结合方向
运算符的结合性:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z则 y 应先与“-”号结合,执行 x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如 x=y=z,由于“=”的右结合性,应先执行 y=z 再执行 x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
- A【1-1-12】C语言运算符优先级与结合方向
- A【1-1-12】C语言运算符优先级与结合方向
- C语言运算符优先级与结合方向
- C语言运算符优先级与结合方向
- C运算符优先级+结合方向
- A【1-1-11】运算符优先级与结合性
- 说说C语言运算符的“优先级”与“结合性”
- C语言运算符的优先级与结合性
- C语言运算符优先级与结合性
- 说说C语言运算符的“优先级”与“结合性”
- C语言运算符优先级与结合性
- C语言运算符的优先级与结合性
- C语言运算符优先级与结合性
- 说说C语言运算符的“优先级”与“结合性”
- C运算符的优先级与结合
- C运算符的优先级与结合
- C语言之优先级、结合性与自增运算
- C语言++a与a++的实现机制与操作符结合优先级
- linux .tar.gz & .tar.bz2 等等压缩包的解压命令 tar命令总结
- weex sdk集成到Android工程四. Weex优雅的“降级”到 HTML5
- 详解spring 每个jar的作用
- 【Python学习笔记】用Python写质数发生器-筛法
- android打开数据库
- A【1-1-12】C语言运算符优先级与结合方向
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- cocos2d杂记
- android子线程加载数据,ui线程实现更新方法
- C#的标识符
- MYSQL中竖表和横表之间的相互转换
- 解决eclipse中无法直接使用Base64Encoder的问题
- setValue和setObject的区别
- HDFS的常用操作