操作符分类
算术操作符
+ - * / %
1.除了%操作符之外,其他的几个操作符就可以用于整数和浮点数
2.对于/操作符如果、个操作数都是整数,执行整数除法,而只要有
浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符
<< 左移操作符
>> 右移操作符
移位操作符的操作数只能是整数
左移操作符
移位规则:
左边抛弃,右边补0
![](https://i-blog.csdnimg.cn/blog_migrate/6e1b95e7f483193dce304de92a62ecaf.png)
右移操作符
移位规则
a.逻辑右移
左边为0填充,右边丢弃
b.算术右移
左边用改制的符号位填充,右边丢弃
位操作符
应用范围:整数范围内
运算编码:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的是源码
& //按位与
例子:
a = 5,b = 1
a: 00000000000000000000000000000101
b: 00000000000000000000000000000001
a&b 00000000000000000000000000000001
运算方法:将整数从十进制转化为二进制,上下比较,两个都是1才为1,有0则为0
| //按位或
例子:
a=3,b=5;
a: 000000000000000000000000000000011
b: 000000000000000000000000000000101
a|b: 000000000000000000000000000000111
运算=方法:将整数从十进制转化为二进制,上下比较,有1则为1,两个都是0才是0
^ //按位异或
例子
a=3,b=5;
a: 00000000000000000000000000000011
b: 00000000000000000000000000000101
a^b:00000000000000000000000000000110
运算方法:上下比较,相同为0;不同为1;
赋值操作符
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的的值。
也就是你可以给自己重新赋值。
*赋值操作符可以连续使用,例如
int a = 10;
int x = 0;
int y = 20;
a = x = y + 1;//连续赋值
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置,后置--
++ 前置,后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符
>
>=
<
<=
!= //用于测试 不相等
== //用于测试 相等
警告:
在编程的过程中== 和=不小心写错,
逻辑操作符
&& 逻辑与
| | 逻辑或
区分 逻辑与 和 按位与
区分 逻辑或 和 按位或
1&2---------->0
1&&2--------->1
1|2------------->3
1| | 2----------->1
逻辑与和或的特点
&&操作符左边为假,右边不计算;
| | 操作符左边为真,右边不计算;
![](https://i-blog.csdnimg.cn/blog_migrate/dd4e7f129c959585e987ad1d65e426b4.jpeg)
结果a= 1,b = 2,c = 3,d = 4
条件操作符
exp1 ? exp2 : exp3
例如
if(x < 0)
y = 10;
else
z = 0;
上面代码用条件操作符表示为
(x < 0) ? (y = 10) : (z = 20 )
逗号表达式
exp1, exp2, exp3,.........expN
逗号表达式,从左向右一次执行。整个表达式的结果是最后一个表达式的结果
![](https://i-blog.csdnimg.cn/blog_migrate/45cb5ba2832bff558d62c1ead7fd2020.png)
c = 13;
下标引用,函数调,用和结构成员
1.[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
例如
int arr[10] ;//创建数组
arr[9] = 10;//实用下标引用操作符
[ ] 的两个操作数是arr和9
2.( ) 函数调用操作符
接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数
3.访问一个结构的成员
. 结构体.成员名
-> 结构体指针 -> 成员名
![](https://i-blog.csdnimg.cn/blog_migrate/9b8d4d1a0208a87d3cee46ab6cc1edd2.png)