1.运算符的类型
- 算术运算符 +(加), -(减), *(乘) , / (除) , %(整除求余) , ++(自加) , —(减)
- 关系运算符 >(大于), <(小于), ==(等于), >=(大于或等于), <=(小于或等于)
- 逻辑运算符 &&(逻辑与)、||(逻辑或)、!(逻辑非)
- 位运算符 <<(按位左移)、 >>(按位右移)、 &(按位与)、 |(按位或)、 ^(按位异或)、
~(按位取反)
- 赋值运算符 =(等号及其拓展赋值运算符)
- 杂项运算符 条件运算符(?:)、逗号、指针运算符(*)、引用运算符和地址运算符(&)、
求字节运算符(sizeof)、强制类型转换运算符、成员运算符(.)、指向成员运算
符(->)、下标运算符([ ])等
2.运算符优先级
3.自增、自减运算符**
- 只能用于变量,不可用于常量和表达式,因为表达式在内存中没有具体空间,常量所占的空间不能重新赋值。
- 结合方式:自右至左,优先级次高
- 自增、自减运算符在变量前面时,先运算后赋值;在后面时,先赋值,后运算。
4.sizeof()运算符
- sizeof()是单目运算符,用于计算某个操作数类型的字节数。
- 格式:sizeof(<类型>)
例: sizeof( int ) //其值为4
5.算术运算符和算术表达式
- +(加), -(减), *(乘) , / (除) , %(整除求余) , ++(自加) , —(减)
- 用算术运算符连接起来的式子是算术表达式
- 两个整数相除结果为整数。 如:1/2=0 , 5/2=2
- 整数才可求余,余数的符号与左边数的符号相同
如: 3%2=1 , -3%2=-1 , 3%-2=1 , -3%-2=-1 , 8%4=0
- 优先级与结合性
优先级大小:() > 、/ 、%*> + 、- ,先乘除(余),后加减。
结合性 :自左向右结合
6.关系运算符和关系表达式
(大于), <(小于), ==(等于), >=(大于或等于), <=(小于或等于)
- == 与= 的差异 =是赋值运算,==是判断是否相等
- < 、 > 、 <= 、 >= 的优先级大于 == 、 !=
算术运算符的优先级大于关系运算符的优先级
关系表达式
- 用关系运算符将表达式连接棋类称为关系表达式。
- 关系表达式的结果只有两个,真为1,假为0。
7.逻辑运算符
&&(逻辑与)、||(逻辑或)、!(逻辑非)
&&(逻辑与): 两边同为真,结果才为真,有一边为假,结果就为假。
设有结论A、B,A&&B的结果如下:<br /> 
||(逻辑或):两边只要有一边为真,则结果为真,两边同为假,结果才为假。
设有结论A、B,A||B的结果如下:
!(逻辑非):将真(1)转换为假(0),将假(0)转换为真(1)。
设有结论A,!A的结果如下:
注意:
- 优先级大小: !> 算术 > 关系 > 逻辑 > 赋值 > 逗号
- 作为条件,所有非0值都为真;作为结果只有0或1两种
- 不可写为 1< x <10 , 正确写法: 1<x &&x<10
- 当前面的表达式可得出整个表达式的结果时,不必再求后面的表达式
如: a&&b&&c,当a为0时,表达式为0,不必求b与c。
例题:
1.判断某年是否为闰年的表达式
1)能被400整除;2)能被4整除,不能被100整除
答案:
(year%400==0)||(year%4==0&&year%100!=0)
2.当c=4时,(c=1)&&(c=3)&&(c=5) 的值为
答案: 1
解析:表达式c=1将c的值变为1,为真
8.赋值运算符和赋值表达式
- “=”左边必须是变量名
若“=”两边变量类型不同,在赋值时要进行类型转换;
转换原则:根据左边的类型转换。
少字节赋值给多字节变量
- 若多字节变量为unsigned,则转换后多余字节补零。
若多字节变量为有符号型,则转换后拓展少字节的最高位。
<br /> 转换后,数据的符号不变
- 多字节赋值给少字节变量
低位照搬
例:
int a =-1;
short int b;
b=a;
结果: b=-1
解析:
复合的赋值运算符
- a+=3 等价于 a=a+3
- x=y+3 等价于 x=x(y+3)
- x/=x-4 等价于 x=x/(x-4)
- x+=y 等价于 x=x+y
- i+=j— 等价于 i=i+(j—)
赋值表达式
a=b=5; 结果: b=5 ,a=5
“=”的结合性为自右至左
9.逗号运算符和逗号表达式
- 表达式1,表达式2,表达式3,。。。,表达式n
- 顺序求解,结果为最后一个表达式的值,并且优先级最低
例: a=(3+4,5*6,2+1); a = 3
10.各类数值型数据间的混合运算
- 整型、实型、字符型数据间可以混合运算
- 不同类型的数据要先转换成同一类型的数据再进行运算
转换规则: