操作符分类
1.算术操作符 2.移位操作符 3.位操作符 4.赋值操作符 5.单目操作符
6.关系操作符 7.逻辑操作符 8.条件操作符 9.操作符优先级
目录
一:算术操作符
对于算术操作符,大家从小学到大,那就是 + 加 - 减 * 乘 /除 %取余
想必这也不需要解释啦。
注:
1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。
二: 移位操作符
移位操作符 有 << 左移操作符 , >> 右移操作符。
对于移位操作符,操作的是二进制位。而且必须是整数。
补码:在计算机系统中,数值一律用补码来表示和存储,其中最高位表示符号位,1表示负数,0表示正数。
正数的原反补相同。
负数:
反码:原码符号位不变,其他位取反。
补码:反码加1。
<< 左移操作符
移位规则:左边抛弃(整体左移一位) 右边补0
int a = 10; //二进制 a<<1 //00000000000000000000000000001010 //00000000000000000000000000010100
>>右移操作符
移位规则
1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充,右边丢弃逻辑位移 int a = 10; //00000000000000000000000000001010 a>>1 //00000000000000000000000000000101 int a = -1; //11111111111111111111111111111111 a>>1 // 1算术 11111111111111111111111111111111 // 2逻辑 01111111111111111111111111111111
注 :
对于移位操作符 不移动负数位,这是标准未定义的。 a<<-1 这是错的
三:位操作符
按位与 &
按位或 |
按位异或 ^
注:操作数必须是整数
按位与 &
比较二进制位,同时为1才为1其余为0
举例 A 01010 B 10110 A&B 00010
按位与 |
比较二进制位,只要有1就为1 其余为0
举例 A 010101 B 101001 A|B 111101
按位异或
比较二进制位,相同为0不同为1
举例 A 1101101 B 1001011 A^B 0100110
四:赋值操作符
赋值操作符 =
复合赋值操作符 += -= *= /= %= >>= <<= &= |= ^=
int a =10; a = a+1; a += 1;//复合运算
五: 单目操作符
!
-
+
&
sizeof
~
--
++逻辑反操作
负值
正值
取地址
操作数的类型长度(以字节为单位)
对一个数的二进制按位取反
前置、后置--
前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
逻辑反操作符 将 假变为真 真变为假 如 !(a==0)
前置后置-- ++;
前置 先加减再使用 后置 先使用再减加
六:关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
七: 逻辑操作符
逻辑与 && 两个数中有一个为假,则判断为假。
逻辑或 || 两个数中有一个为真,则判断为真。
(a && b) (a || b)
八: 条件操作符(三目操作符)
a ? : b : c a为真执行b为假执行c
九:优先级
操作
符描述 用法示例 结果类 型 结合 性 是否控制求值 顺序 () 聚组 (表达式) 与表达
式同N/A 否 () 函数调用 rexp(rexp,...,rexp) rexp L-R 否 [ ] 下标引用 rexp[rexp] lexp L-R 否 . 访问结构成员 lexp.member_name lexp L-R 否 -> 访问结构指针成员 rexp->member_name lexp L-R 否 ++ 后缀自增 lexp ++ rexp L-R 否 -- 后缀自减 lexp -- rexp L-R 否 ! 逻辑反 ! rexp rexp R-L 否 ~ 按位取反 ~ rexp rexp R-L 否 + 单目,表示正值 + rexp rexp R-L 否 - 单目,表示负值 - rexp rexp R-L 否 ++ 前缀自增 ++ lexp rexp R-L 否 -- 前缀自减 -- lexp rexp R-L 否 * 间接访问 * rexp lexp R-L 否 & 取地址 & lexp rexp R-L 否 sizeof 取其长度,以字节
表示sizeof rexp sizeof(类
型)rexp R-L 否 (类
型)类型转换 (类型) rexp rexp R-L 否 * 乘法 rexp * rexp rexp L-R 否 / 除法 rexp / rexp rexp L-R 否 % 整数取余 rexp % rexp rexp L-R 否 + 加法 rexp + rexp rexp L-R 否 - 减法 rexp - rexp rexp L-R 否 << 左移位 rexp << rexp rexp L-R 否 >> 右移位 rexp >> rexp rexp L-R 否 > 大于 rexp > rexp rexp L-R 否 >= 大于等于 rexp >= rexp rexp L-R 否 < 小于 rexp < rexp rexp L-R 否 <= 小于等于 rexp <= rexp rexp L-R 否
操作
符描述 用法示例 结果类 型 结合 性 是否控制求值 顺序 == 等于 rexp == rexp rexp L-R 否 != 不等于 rexp != rexp rexp L-R 否 & 位与 rexp & rexp rexp L-R 否 ^ 位异或 rexp ^ rexp rexp L-R 否 | 位或 rexp | rexp rexp L-R 否 && 逻辑与 rexp && rexp rexp L-R 是 || 逻辑或 rexp || rexp rexp L-R 是 ? : 条件操作符 rexp ? rexp : rexp rexp N/A 是 = 赋值 lexp = rexp rexp R-L 否 += 以...加 lexp += rexp rexp R-L 否 -= 以...减 lexp -= rexp rexp R-L 否 *= 以...乘 lexp *= rexp rexp R-L 否 /= 以...除 lexp /= rexp rexp R-L 否 %= 以...取模 lexp %= rexp rexp R-L 否 <<= 以...左移 lexp <<= rexp rexp R-L 否 >>= 以...右移 lexp >>= rexp rexp R-L 否 &= 以...与 lexp &= rexp rexp R-L 否 ^= 以...异或 lexp ^= rexp rexp R-L 否 |= 以...或 lexp |= rexp rexp R-L 否 , 逗号 rexp,rexp rexp L-R 是