C语言的操作符

时间:2021-05-14 17:46:24

C语言—操作符

操作符:顾名思义就是进行一些特定运算的符号,比如:+ - * /

分类

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
  • 下标引用、函数调用和结构成员

    00.算术操作符

    + - * / %

  • 加减乘法都和数学里的一样

  • 除法,如果除号两边都是整数,结果也是整数,例如:7/2=3
    如果除号两边有浮点数,则结果也是浮点数,例如:10/2.5=4.0

  • 取余操作符%,两边必须为整数,结果也是整数,例如:7%3=1,意为7除以3余1

    01.移位操作符

    左移操作符 <<
    右移操作符 >>

  • 移位操作符是针对一个数的二进制序列而言的

  • 左移规则:左边丢弃,右边补0
    例如:0101 0110 左移1位 变成1010 1100

  • 右移规则:分为两种
    1.算术右移:右边丢弃,左边用原值符号位填充
    例如:1001 0010 算术右移1位 变成1100 1001
    ps:大多数编译器都采用算术右移

    2.逻辑右移:右边丢弃,左边补0

  • 不能移动负数位

    02.位操作符

    按位与 &
    按位或 |
    按位异或 ^

  • 位操作符的操作数必须为整数

  • 按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。规则为:
    1&1=1
    1&0=0
    0&1=0
    0&0=0

  • 按位或“|”,规则为:
    1 | 1 = 1,
    1 | 0 = 1,
    0 | 1 = 1
    0 | 0 = 0

  • 按位异或“^”,规则为:
    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    0 ^ 0 = 0

  • 位操作符都是针对二进制序列的补码操作

    03.赋值操作符

    赋值操作符 =

  • 就是将一个值赋给一个变量,例如a=0 就是将0赋给了a

  • 复合赋值符:

C语言的操作符

  • 例如a+=2 就相当于 a=a+2 以此类推

    04.单目操作符

    C语言的操作符

  • 注:

    int* p = NULL; //这里的*不是解引用操作符
    *p = 20;//这里的*才是解引用操作符
  • a=i++表示先把 i 的值赋给a,然后 i 再加1;a=++i 表示 i 先加1,再赋值给a

  • sizeof(arr)/sizeof(arr[0]) 表示求一个数组的元素个数

  • 取地址 &数组名—数组名表示整个数组–这里取出的是整个数组的地址
    除此之外,所有的数组名都表示数组首元素的地址

    05.关系操作符

大于 >
小于 <
大于等于 >=
小于等于 <=
不等于 !=
判断是否相等 ==

  • if(5 == a)//这里将常量写在操作符左边,可以避免因为少写一个等号而出错

    06.逻辑操作符

    C语言的操作符

  • 逻辑与&& ,0为假,非0为真,例如:5&&0=0
  • 逻辑或||,例如:5||0=1

    07.条件操作符

    exp1 ? exp2 : exp3

  • 意为:如果表达式1为真,执行表达式2,否则执行表达式3

    08.逗号表达式

    exp1,exp2,exp3,……expn

  • 逗号表达式,就是用逗号隔开的多个表达式。
    逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

    09.下标引用、函数调用和结构成员

[ ] 下标引用
例如arr[1] 表示arr数组的第一个元素


() 函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。


. -> 访问一个结构的成员
结构体 . 成员名
结构体指针 -> 成员名


第一次写总结,还有很多不完善的地方,欢迎批评指正。