操作符分类
- 算数操作符
- 移位操作符
- 位操作符
- 赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号表达式
- 下标引用,结构体成员等
算数操作符``
+ - * /
- 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
- 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
- % 操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符
<< 左移操作符:二进制序列的右边补0,对整型数左移相当于乘2
>> 右移操作符::分算数右移和逻辑右移,对整型数右移相当于除2
算术右移(左边补符号位)
例:int -1;右移时左边补符号位1
1111…1111(-1的补码)
1111…1111(右移后左边补符号位’1’,右边舍弃)
逻辑右移(左边补0)
例:unsigned int -1; 右移时左边补0
1111…1111(unsigned int -1的补码)0
0111…1111(右移后左边补‘0’,右边舍弃)
位操作符
& //按位与 有'0'则为'0',例101(5)&010(2)=0
| //按位或 有'1'则为'1',例111(7)|101(5)=111(7)
^ //按位异或 相同则为'0',不同则为'1',例1101(13)^0111(7)=1010(10)
&:两数只进位相加
应用:可用于清除二进制序列中的‘1’
例:int a=39; 二进制序列为:100111
a&(a-1)=38(100110)清除了最后面的1
a&(a-1)=36(100100)清除了最后面的1
每进行一次都把最后面的1变为0
^:两数不进位相加
应用:不用+实现两数相加
int a=5,b=4;
int a_t=0,b_t=0;
int total=0;
a_t=(a&b)<<1; //a_t=8(二进制:1000)
b_t=a^b; //b_t=1(二进制:001)
total=a_t^b_t //total=9(二进制:1001)
赋值操作符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
逻辑操作符
&& 逻辑与
|| 逻辑或
条件操作符
exp1 ? exp2 : exp3
例
a=1>2?1:2;
相当于
if(1>2)
a=1;
else
a=2;
逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果
int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);
结果:a=12,b=13,c=13
操作符优先级
( )
[ ]
. 访问结构成员
-> 访问结构指针成员
单目操作符:如++,--,!,~...
* 间接访问
& 取地址
sizeof 取其长度,以字节表
算数操作符:如*,/,+,-...
移位操作符:<<,>>...
关系操作符:>,>=,<,<=...
位操作符
逻辑操作符
赋值操作符
来源:CSDN
作者:拿霸王洗头膏来
链接:https://blog.csdn.net/qq_45691748/article/details/103210367