运算符
定义
表示某种运算功能的符号。
分类
按操作功能运算符大致可分为:算术运算符、关系运算符、逻辑运算符、按位运算符以及其他运算符如赋值运算符、条件运算符、逗号运算符等。
算术运算符 | + - * / % ++ – |
---|---|
关系运算符 | > < == >= <= != |
逻辑运算符 | ! && ll |
位运算符 | << >> ~ l ^ & |
赋值运算符 | =及其扩展赋值运算符 |
条件运算符 | ? : |
逗号运算符 | , |
指针运算符 | * & |
求字节数运算符 | sizeof |
强制类型转换运算符 | (类型) |
成员运算符 | . -> |
下标运算符 | [ ] |
其他 | 如函数调用运算符() |
表达式
定义
由操作数和运算符组成的序列,它和算术中四则混合运算类似,其中操作数可以是常量也可是变量
分类
例子
单目运算符:取负运算符(-)
双目运算符:算术运算符(+)
叁木运算符:条件运算符(? :)
表达式求值
1.先按运算符的优先级高低次序执行。例如,先乘除后加减
2.如果在一个操作数两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行
优先级
定义
各类运算符在一个表达式中运算的先后顺序。如表达式2+3*5首先进行乘法运算符,然后进行加法运算
结合性
定义
当一个运算量两侧的运算符优先级相同时运算的结合方向。如2+3-1,其加减的结合性是自左向右,因此先做加法,再进行减法运算.
分类及结合性表
运算符 | 解释 | 结合方式 |
---|---|---|
() [] -> . | 括号(函数等),数组,两种结构成员访问 | 由左向右 |
!- ++ – + - * & (类型) sizeof | 否定,按位否定,增量,减量,正负号,间接,取地址,类型转换,求大小 | 由右向左 |
/ * % | 除,乘,取模 | 由左向右 |
-+ | 减,加 | 由左向右 |
<< >> | 左移,右移 | 由左向右 |
< <= >= > | 小于,小于等于,大于等于,大于 | 由左向右 |
== != | 等于,不等于 | 由左向右 |
& | 按位与 | 由左向右 |
^ | 按位异或 | 由左向右 |
l | 按位或 | 由左向右 |
&& | 逻辑与 | 由左向右 |
ll | 逻辑或 | 由左向右 |
? : | 条件 | 由右向左 |
= += -= *= /= &= ^= l= <<= >>= | 各种赋值 | 由右向左 |
, | 逗号(顺序) | 由左向右 |
规律
结合性:除单目运算符、赋值运算符和条件运算符是右结合性外,其他都是左结合性
优先级:为“单目高于双目,双目高于三目,三目高于赋值”
双目运算符中的十个优先级的先后顺序可记忆为:“算术运算符高于移位运算符,移位运算符高于关系运算符,关系运算符高于位逻辑运算符(不包括单目位逻辑运算符),位逻辑运算符高于逻辑运算符”
总结
初步归纳运算符与表达式知识点