一、 算术操作符:
1.1 加减乘除
+ - * %/
除法
- 整数除法(除号的两端都是整数)
- 浮点数除法(除号的两端只要有一个小数就执行小数除法)
在除法中,除数不可以为0
当除法的俩个操作数至少有一个为负数时
x/y x%y 负÷负 例 x = -22, y=-5 4 -2 5 3 负÷正 例 x = -22, y = 5 -4 -2 -5 3 正÷负 例 x = -22, y = 5 -4 2 -5 -3
% 模除:
- 取模操作符的俩个操作数必须是整数 返回的是整除之后的余数。
二、 移位操作符:
<< 左移操作符 >> 右移操作符
🔥 注:移位操作符的操作数只能是整数。
这里移位操作符指的是 —— 移动二进制
计算机 —— 能处理的是二进制的信息
1 和 0
2.1 计算机中整数的存储
整数在内存中的储存形式是补码
一个整数的二进制的表示有3种:
- 原码
- 反码
- 补码
-1:的表示 | 负数的存储 |
10000001 原码 | 左边的1表示符号位负 右边就是正常二进制 |
11111110 反码 | 符号位不变,其他按位求反 |
11111111 补码 | 反码+1 |
正整数: | 原码、反码、补码相同 |
2.2 >> 右移操作符
右移:
算术右移(右边丢弃,左边补原来的符号位)
逻辑右移(右边丢弃,左边直接补0)
在c语言中没有明确规定到底是算术右移还是逻辑右移,一般编辑器上采用的
算术右移
2.3 << 左移操作符
移位规则:
左边抛弃、右边补0
位操作符:他们的操作数必须是整数
在这里插入代码片
2.4 &按位与
& //按位与 & -- 对应二进制位有0则为0,两个同时为1,才是1 //00000000000000000000000000000011 //11111111111111111111111111111011 //00000000000000000000000000000011 – 与运算后
2.5 |按位或
| - 按(2进制)位或 - 对应的二进制位有1则为1,两个同时为0才是0 //00000000000000000000000000000011 //11111111111111111111111111111011 //11111111111111111111111111111011 – 按位或运算后
2.6 ^ 按位异或
^ - 按二进制位异或 -对应的二进制位相同为0,相异为1 //00000000000000000000000000000011 //11111111111111111111111111111011 //11111111111111111111111111111000 – 按位异或后
^ 按位异或应用示例:
//交换2个整型变量
//不能创建临时变量(第三个变量),实现两个整数的交换
int main() { int a = 3; int b = 5; printf("交换前:a=%d b=%d\n", a, b); /*int tmp = a; a = b; b = tmp;*/ /*a = a + b; b = a - b; a = a - b;*/ a = a ^ b; // b = a ^ b; //在这里 b = (a^b)^b所以 = a a = a ^ b; //在这里 a = (a^b)^a所以 = b printf("交换后:a=%d b=%d\n", a, b); return 0; }
int a = 3; int b = 5; a^a = 0; a^0 = a; //异或是支持交换律的 a^b^a = 5 a^a^b = 5
三、 复合赋值符 :
+= -= *= /= %= >>= <<= &= |= ^=
int x = 10;
x = x+10;
x += 10;//复合赋值
//其他运算符一样的道理。这样写更加简洁。
二、单目操作符:
单目操作符就只有一个操作数,例如下面这些就是双目操作符
- a+b – 双目操作符
- a&b – 双目操作符
- 3^5 – 双目操作符
这些就是双目运算符!大家只要记住双目操作符有俩个操作符,单目只有一个就好了!
表示符号 | 符号含义 |
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
- -a | 前置减减 |
a- - | 后置减减 |
++a | 前置加加 |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
! | 逻辑反操作 |
a++ | 后置加加 |
int flag = 0; if (flag == 0) { printf("hehe\n"); } if (!flag)//flag 为假 打印hehe { printf("hehe\n"); }
~ 对一个数的二进制按位取反
sizeof 操作数的类型长度(以字节为单位)
sizeof 不是函数是操作符
sizeof 计算的是类型创建变量的大小,单位是字节
& 取地址
- 间接访问操作符(解引用操作符)
int main() { int a = 10; //pa是指针变量 int* pa = &a;//&-取地址操作符-取出a的地址 *pa = 20;//解引用操作符(间接访问操作符)-单目操作符-通用pa中存放的地址,找到指向的空间(内容) int c = *pa; return 0; }
三、 关系操作符:
大于 < | 小于> |
!= 不等于 | 等于 = |
大于等于 <= | >= 小于等于 |
!= 不等于 | == 等于 |
四、 逻辑操作符;
&&
逻辑与
- && || ! - 计算结果是真,使用1表示
&& 操作符,左边为假,右边就不计算了
||
逻辑或
|| 操作符,左边为真,右边就不在计算
📝全篇总结
✅ 归纳:
好了以上就是关于C语言中全部 操作符的讲解和解释啦,大家可以自己去练习一下呢!尤其是 异或操作的运算哦!
算术操作符
逻辑操作符
位移操作符
单目操作符
赋值操作符
看到这里了还不给博主扣个:
⛳️ 点赞
☀️收藏
⭐️ 关注
!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。