1.运算符的类型

    • 算术运算符 +(加), -(减), *(乘) , / (除) , %(整除求余) , ++(自加) , —(减)
    • 关系运算符 >(大于), <(小于), ==(等于), >=(大于或等于), <=(小于或等于)
    • 逻辑运算符 &&(逻辑与)、||(逻辑或)、!(逻辑非)
    • 位运算符 <<(按位左移)、 >>(按位右移)、 &(按位与)、 |(按位或)、 ^(按位异或)、

    ~(按位取反)

    • 赋值运算符 =(等号及其拓展赋值运算符)
    • 杂项运算符 条件运算符(?:)、逗号、指针运算符(*)、引用运算符和地址运算符(&)、

    求字节运算符(sizeof)、强制类型转换运算符、成员运算符(.)、指向成员运算
    符(->)、下标运算符([ ])等

    2.运算符优先级
    批注 2020-08-06 233105.png

    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.逻辑运算符

    • &&(逻辑与)、||(逻辑或)、!(逻辑非)

      • &&(逻辑与): 两边同为真,结果才为真,有一边为假,结果就为假。

        1. 设有结论ABA&&B的结果如下:<br /> ![批注 2020-08-07 095828.png](https://cdn.nlark.com/yuque/0/2020/png/2314091/1596765520345-24e3113b-b2dc-4569-a352-cbf63bcaa077.png#align=left&display=inline&height=161&margin=%5Bobject%20Object%5D&name=%E6%89%B9%E6%B3%A8%202020-08-07%20095828.png&originHeight=233&originWidth=211&size=11977&status=done&style=none&width=146)
      • ||(逻辑或):两边只要有一边为真,则结果为真,两边同为假,结果才为假。

    设有结论A、B,A||B的结果如下:
    批注 2020-08-07 095828.png

    • !(逻辑非):将真(1)转换为假(0),将假(0)转换为真(1)。

      设有结论A,!A的结果如下:
      批注 2020-08-07 095828.png

    注意:

    1. 优先级大小: > 算术 > 关系 > 逻辑 > 赋值 > 逗号
    2. 作为条件,所有非0值都为真;作为结果只有0或1两种
    3. 不可写为 1< x <10 , 正确写法: 1<x &&x<10
    4. 当前面的表达式可得出整个表达式的结果时,不必再求后面的表达式

    如: a&&b&&c,当a为0时,表达式为0,不必求b与c。

    例题:
    1.判断某年是否为闰年的表达式
    1)能被400整除;2)能被4整除,不能被100整除
    答案:

    1. (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,则转换后多余字节补零。

    批注 2020-08-07 095828.png

    • 若多字节变量为有符号型,则转换后拓展少字节的最高位。

      1. ![批注 2020-08-07 095828.png](https://cdn.nlark.com/yuque/0/2020/png/2314091/1596767356937-90e7fa2e-d6c9-442e-b3d7-2d85340c714b.png#align=left&display=inline&height=134&margin=%5Bobject%20Object%5D&name=%E6%89%B9%E6%B3%A8%202020-08-07%20095828.png&originHeight=245&originWidth=653&size=20946&status=done&style=none&width=358)<br /> 转换后,数据的符号不变
    • 多字节赋值给少字节变量

    低位照搬
    例:

    1. int a =-1;
    2. short int b;
    3. b=a;

    结果: b=-1
    解析:
    批注 2020-08-07 095828.png

    • 复合的赋值运算符

      • 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.各类数值型数据间的混合运算

    • 整型、实型、字符型数据间可以混合运算
    • 不同类型的数据要先转换成同一类型的数据再进行运算

    转换规则: