目录
分类
1.算术操作符
例如 : 加号: + 减号:- 乘号: * 除号: / 取模: %
需注意几点:
1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
如:
#include<stdio.h>
int main()
{
printf("%d\n", 10 / 3);
printf("%f\n", 10 / 3.0);
return 0;
}
3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。
2.移位操作符
左移操作符: <<
右移操作符: >>
注意:移位操作符的操作数只能是整数。
2.1左移操作符: <<
实际上移位操作符是对数值在内存上的二进制位进行操作的。
而在内存上的二进制位是数值的补码,对于正整数而言,源码、反码、补码是相同的。
对于负整数而言,源码,反码,补码是不同的。
负整数的反码:对比源码,除符号位不变,其余二进制位取反。
负整数的补码:反码+1。
下面请看图解:
而左移操作符,就是移动这个32个二进制位。
如图:
2.2右移操作符
顾名思义,右移就是整体向右移动,不过要注意:
首先右移运算分两种:
1. 逻辑移位: 左边用0填充,右边丢弃
2. 算术移位: 左边用原该值的符号位填充,右边丢弃
本小节最后警告一点:对于移位运算符,不要移动负数位,这个是标准未定义的!!!
3.位操作符
位操作符有:
& :按位与
| :按位或
^ :按位异或
注:他们的操作数必须是整数。
3.1 & :按位与
规则:1&1 = 1,0&1 = 0,0&0 = 0, 1&0 =0
3.2 | :按位或
规则:0 | 0 = 0,1 | 0 = 1,1 | 1 = 1, 0 | 1 =1
3.3 ^ :按位异或
规则:相同为 0 ,相异为 1
下面我们通过一个简单的例子来认识一下这三个位操作符:
如图:
4.赋值操作符
简单来说就是 = ;
比如给一个变量X赋值 5
int X=5;
还有就是复合赋值:
+=;-=;/=;*=;%=;<<= ; >>= ; &= ; |= ; ^=
以 += 为例
就是:
int x =0;
x+=5;//相当于 x = x + 5
其余的同理。
5.单目操作符
5.1简单介绍
! 逻辑反操作(常常和 = 联用,!=表示不等于)
- 负值
+ 正值
& 取地址
例如:
int a =10;
int *p =&a;//对a取地址放到指针变量 p 中
sizeof 操作数的类型长度(以字节为单位)
sizeof,可以求变量(类型)所占空间的大小。
例如:
int a =10;
printf("%d\n",sizeof(a));//结果:4(整型数据占4个字节大小)
printf("%d\n",sizeof(int));//结果:4(整型数据占4个字节大小)
当然对于 变量来说这样写也可以:
printf("%d\n", sizeof a);
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
5.2前置、后置 ++和 --
前置和后置的区别在于:
前置:先运算,后使用
后置:先使用,后运算
什么意思呢?让我们来看例图:
6.关系操作符
> ; < ; ==(表示相等) ; !=(不相等) ;>= ; <=
相信数学大家都会,这里基本一致,就不过多叙述了。
不过注意一点:不要把 = (赋值) 和 == (相等)搞混!
7.逻辑操作符
&& 逻辑与
|| 逻辑或
需要注意的是:逻辑与按位与、逻辑或与按位或的区别!逻辑注重的是真假。
例如:
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
8.条件表达式
格式:exp1 ? exp2 : exp3 (条件1成立,输出条件2的结果;条件1不成立,输出条件3的结果)
例:
int r = 5>8 ? 6 : 8;
printf("%d",r);//输出结果: r = 8(因为5>8不成立)
就相当于:
int r =0;
if(5>8)
r=6;
else
r=8;
9.逗号表达式
格式:exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
例:
10.下标引用、函数调用和结构成员
10.1. [ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
10.2. ( ) 函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
例如:
10.3. 访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名
如图:
完结
最后欢迎大家指正评论,另外请不要您手中的赞,谢谢收看!!!