前言
下面将介绍算术操作符,移位操作符,位操作符,单目操作符,关系操作符,赋值操作符,逻辑操作符,条件操作符
一、算数操作符
+ - * / %
最简单的加,减,乘,除和取余
- 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
- 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
- % 操作符的两个操作数必须为整数。返回的是整除之后的余数。如8%3就相当于8除以3,商2余2
那么8%3 = 2
二、移位操作符
<< >>
<< 左移操作符 >>右移操作符
其中: 对于移位运算符,不要移动负数位,这个是标准未定义的。而如果移位的数值过大(大于32),可以按照移位的数对32取余来移位。如左移35位也就是相当于左移三位 35%32=3
左移操作符移位规则:左边(高位)抛弃、右边(低位)补0
例如 :10<<3 就是把10左移三位 ,结果是80
因此如果数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。
而-10<<3 结果是-80
右移操作符移位规则:低位抛弃,高位补 0 或 1。如果数据的最高位是 0,那么就补 0;如果最高位是 1,那么就补 1。(因此右移也可以称作符号移位,补的数是符号位)如果被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方。
三、位操作符
& | ^
& 表示按位与,| 表示按位或,^ 表示按位异或
注:他们的操作数必须是整数
- 一个比特位只有 0 和 1 两个取值,只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0。
- 参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1为1,0|0为0,1|0为1。
- 参与^ 运算两个二进制位不同时,结果为 1,相同时结果为 0。例如0^ 1为1,0^ 0为0,1^1为0。
四、单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)可以求变量所占空间的大小
~ 对一个数的二进制按位取反(1变0,0变1)
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
五、关系操作符
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 用于测试“不相等”
== 用于测试“相等”
六、赋值操作符
即 = (与数学中的=不同,当表示相等时,需要用到关系操作符==)
如:int a = 5; 表示把5的值赋给变量a
七、逻辑操作符
&& ||
- && 表示逻辑与(相当于数学中的且)
参与运算的两个表达式都为真时,结果才为真,否则为假。 - || 表示逻辑或(相当于数学中的或)
参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假。 - && 和 || 都为双目运算符
八、条件操作符
exp1 ? exp2 :exp3
C语言中唯一一个三目运算符,求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。