操作符
一 . 算数操作符
+ - * / %
- 1、除了%操作符,其余几个操作符都是既适用于浮点型又适用于整数类型
2、对于 / 操作符的两个操作数是整数时,它执行整数运算,只要有浮点数则执行浮点数除法
3、% 为取模操作符,其两个操作数必须为整数,而返回的值是整除之后的余数
二 . 移位操作符
-
左移位操作符 <<
-
右移位操作符 >>
移位操作是把一个值的二进制位向左或向右移动。
-
左移一位,相当于数值乘2;右移一位,相当于除以2。
-
在左移位中,值最左边的几位被丢弃,右边多出来的空位由 0 补齐。
-
在右移位中,有两种方案:(二者只有在操作符是负值时才不一样)
-
逻辑移位:左边移入的位用0填充;
-
算数移位:左边移入的位由原先该值的符号位决定,符号位为1 则移入的位均为1,符号为0,移入的位均为0。
三 . 位操作符
位操作符有:
-
& // 按位与 如果两个位都为1,结果为1;否则结果为0
-
| // 按位或 如果两个位都是0,结果为0;否则结果为1
-
^ // 按位异或 如果两个位不同,则结果为1;如果两个位相同,结果为0
-
注意 他们的操作数必须为整数。
四 . 赋值操作符
-
=
a = x = y+1
x = y +1; a = x; 第2个显然比第1个简洁
五 . 复合赋值符
-
+=
-
-=
-
*=
-
/=
-
%=
-
<<=
-
>>=
-
&=
-
^=
-
|= (类型)
六 . 单目运算符
-
! 逻辑反操作
-
- 负值
-
+ 正值
-
~ 求补操作 对一个数的二进制取反
-
& 产生操作数的地址
-
* 间接访问操作符
-
sizeof 判断操作数的类型长度,以字节为单位表示,操作数既可以是个表达式,也可以是(类型名)
-
(类型) 强制类型转换,用于把表达式的值转换为另外的类型
-
++ -- 这两个操作符都有两个变型
七 . 关系操作符
>=
<
<=
!=
==
八 . 逻辑操作符
-
&& 逻辑与
|| 逻辑或
-
(1)&& ( 2 ) 如果表达式1是真的,再对表达式2求值;
-
如果表达式1是假的,对表达式2没必要再求值,整个式子则为假
-
对表达式1求值,若为真,则不必要求后面的,整个式子结果已经确定
九 . 条件操作符
- 条件操作符接受三个操作数,并且会控制子表达式的求值顺序。
-
exp1 ? exp2 : exp3
- 首先算exp1,若它的值为非0值,即为真,那么整个表达式的值为exp2,对exp3不会求值;
- 但是如果exp1的值为假,那么不对exp2 求值,整个表达式的值为exp3。
十 . 逗号表达式
-
exp1,exp2,exp3,...expN
十一 . 下标引用,函数调用和结构成员
1. [ ]下标引用操作符
操作数:一个数组名+一个索引值
-
2. ( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数
3.访问一个结构的成员
结构体.成员名
-> 结构体指针->成员名