1.算数操作符
操作符 | 作用 |
+ | 两个数相加,1+1=2 |
- | 两个数相减,1-2=-1 |
* | 两个数相乘,1*2=2 |
/ | 两个数相除,5/1=5 |
% | 取模,即结果为两数相除的余数,3%6=0 |
注:
<1>%操作符两个操作数必须为整数,其他的操作符可以用作整数和浮点数。
<2>对于/操作符来说,两个操作数都为整数执行整数除法,只要有浮点数就执行浮点数除法。
2.移位操作符与位操作符
操作符 | 描述 |
>> | 右移操作符,左操作数的二进制右移右操作数指定的位数。 |
<< | 左移操作符,左操作数的二进制左移右操作数指定的位数 |
& | 比特位按位与,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=1 |
注:
<1>移位操作符与位操作符都是在对比特位进行操作,左移操作符移位,左边丢弃,右边补0。
<2>右移操作符移位分为逻辑移位和算数移位,逻辑移位左边补0,右边丢弃,算数移位左边补符号位,右边丢弃。
对于移位操作符,不要移动负号位!
<3>位操作符的两个操作数必须为整数。左移一位相当于十进制乘以2,右移一位相当于十进制除以2
3.赋值操作符
操作符 | 描述 |
= | 简单的赋值,把右操作数赋值给左操作数 |
+= | 加且赋值运算符,a+=3即为a=a+3 |
-= | 减且赋值运算符,a-=3即为a=a-3 |
*= | 乘且赋值运算符,a*=3即为a=a*3 |
/= | 除且赋值运算符,a/=3即为a=a/3 |
%= | 模且赋值运算符,a%3即为a=a%3 |
<<= | 左移且赋值运算符,a<<=3即为a=a<<3 |
>>= | 右移且赋值运算符,a>>=3即为a=a>>3 |
&= | 按位与且赋值运算符,a&=3即为a=a&3 |
|= | 按位或且赋值运算符,a|=3即为a=a|3 |
^= | 按位异或且赋值运算符,a^=3即为a=a^3 |
4.单目操作符
操作符 | 描述 |
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
* | 间接访问操作符(解引用操作符) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置-- |
++ | 前置、后置++ |
& | 取地址 |
(类型) | 强制类型转换 |
Sizeof | 操作符的类型长度(以字节为单位) |
注:
<1>前置++,--
若a=3,x=++a,先对a进行自加,再使用a,表达式x的值为4,x=--a,先对a进行自减,再使用a,x的值为2
<2>后置++,--
若a=3,x=a++,先使用a,再对a进行自加自减操作
<3>int arr1[5] = {0};
char arr2[5] = {0};
使用sizeof求字符串长度,sizeof(arr1) = 20,sizeof(arr2) = 5,
sizeof求操作符长度是以字节为单位的
5.关系操作符和逻辑操作符
操作符 | 描述 |
> | 左操作数大于右操作数,符合则为真 |
>= | 左操作数大于等于右操作数,符合则为真 |
< | 左操作数小于右操作数,符合则为真 |
<= | 左操作数小于等于右操作数,符合则为真 |
== | 左操作数等于右操作数,符合则为真 |
!= | 左操作数不等于右操作数,符合则为真 |
&& | 逻辑与运算,两个操作数都为真则表达式才为真 |
|| | 逻辑或运算,两个操作数都为假则表达式才为假 |
! | 逻辑非,转换逻辑状态,把真转为假 |
注:
<1>位操作符与逻辑操作符的区别,位操作符是比特位之间进行逻辑判断,逻辑操作符是表达式进行逻辑判断
6.条件操作符
条件?表达式1:表达式2
若条件满足,则执行表达式1,否则执行表达式2
7.逗号表达式
表达式1,表达式2,......,表达式n,
表达式从左往右依次执行,整个表达式的结果是最后一个表达式的结果。