算术操作符
+ - * / %
%操作符,要求左右操作数必须为整数
移位操作符
<< >>
对于移位运算符,不能移动负数位,这个是C语言标准未定义的,属于 未定义行为。
左移操作符
int num = 10;
num << 1;
左移 1 位,就是把 num 在内存里的二进制全部向左移动 1 位,最左边的一个二进制位就被抛弃了,最右边补 0。左移 1 位,相当于×2。
但实际上 num 在没有被赋值的情况下,自身的值并不会改变。
右移操作符
C语言只支持算术右移
算术右移
最低位舍弃,最高位补符号位
逻辑右移
最低位舍弃,最高位补0
位操作符
& | ^ ~
两个操作数(必须是整数)对应二进制位进行运算。
&,两个位都是1,则结果为1,否则为0
|,两个位都是0,则结果为0,否则为1
^,相异为1,相同为0
~,针对一个操作数计算。0取反为1,1取反为0
逻辑操作符
&& || !
短路求值
赋值操作符
= 以及 += 一系列复合赋值符
赋值操作符可以进行连续赋值
单目操作符
!逻辑反 -负值 +正值 &取地址 sizeof操作数或者类型的长度 ~按位取反 - -自减 ++自增 *间接访问操作符 (类型)类型强转
关系操作符
> >= < <= == !=
条件操作符
C语言唯一的三目运算符exp1?exp2:exp3
优先级别最低。