前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言初阶】什么操作符你还没搞懂?试试这篇文章让你彻底理解各种操作符!

【C语言初阶】什么操作符你还没搞懂?试试这篇文章让你彻底理解各种操作符!

作者头像
鸽芷咕
发布2023-12-25 15:12:46
1420
发布2023-12-25 15:12:46
举报
文章被收录于专栏:C++干货基地C++干货基地
在这里插入图片描述
在这里插入图片描述

🎬 鸽芷咕个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》

⛺️生活的理想,就是为了理想的生活!


文章目录
  • 一、 算术操作符:
    • 1.1 加减乘除
  • 二、 移位操作符:
    • 2.1 计算机中整数的存储
    • 2.2 >> 右移操作符
    • 2.3 << 左移操作符
    • 2.4 &按位与
    • 2.5 |按位或
    • 2.6 ^ 按位异或
    • ^ 按位异或应用示例:
  • 三、 复合赋值符 :
  • 二、单目操作符:
    • & 取地址
  • 三、 关系操作符:
  • 四、 逻辑操作符;
  • 📝全篇总结

一、 算术操作符:

1.1 加减乘除

+ - * %/ 除法

  1. 整数除法(除号的两端都是整数)
  2. 浮点数除法(除号的两端只要有一个小数就执行小数除法)

在除法中,除数不可以为0

当除法的俩个操作数至少有一个为负数时

代码语言:javascript
复制
	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

% 模除

  • 取模操作符的俩个操作数必须是整数 返回的是整除之后的余数。

二、 移位操作符:

代码语言:javascript
复制
<<	左移操作符
>>	右移操作符

🔥 注:移位操作符的操作数只能是整数。

这里移位操作符指的是 —— 移动二进制 计算机 —— 能处理的是二进制的信息 1 和 0

2.1 计算机中整数的存储

整数在内存中的储存形式是补码 一个整数的二进制的表示有3种:

  • 原码
  • 反码
  • 补码

-1:的表示

负数的存储

10000001 原码

左边的1表示符号位负 右边就是正常二进制

11111110 反码

符号位不变,其他按位求反

11111111 补码

反码+1

正整数:

原码、反码、补码相同

2.2 >> 右移操作符

右移: 算术右移(右边丢弃,左边补原来的符号位) 逻辑右移(右边丢弃,左边直接补0) 在c语言中没有明确规定到底是算术右移还是逻辑右移,一般编辑器上采用的 算术右移

2.3 << 左移操作符

移位规则: 左边抛弃、右边补0

位操作符:他们的操作数必须是整数

代码语言:javascript
复制
在这里插入代码片

2.4 &按位与

代码语言:javascript
复制
&	//按位与
& -- 对应二进制位有0则为0,两个同时为1,才是1
//00000000000000000000000000000011
//11111111111111111111111111111011
//00000000000000000000000000000011 – 与运算后

2.5 |按位或

代码语言:javascript
复制
| - 
按(2进制)位或 - 对应的二进制位有1则为1,两个同时为0才是0
	//00000000000000000000000000000011
	//11111111111111111111111111111011
	//11111111111111111111111111111011 – 按位或运算后

2.6 ^ 按位异或

代码语言:javascript
复制
^ - 
按二进制位异或 -对应的二进制位相同为0,相异为1
//00000000000000000000000000000011
//11111111111111111111111111111011
//11111111111111111111111111111000 – 按位异或后

^ 按位异或应用示例:

//交换2个整型变量 //不能创建临时变量(第三个变量),实现两个整数的交换

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
int a = 3;
int b = 5;
a^a = 0;
a^0 = a;
//异或是支持交换律的
a^b^a = 5
a^a^b = 5

三、 复合赋值符 :

代码语言:javascript
复制
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

int x = 10; x = x+10; x += 10;//复合赋值 //其他运算符一样的道理。这样写更加简洁。

二、单目操作符:

单目操作符就只有一个操作数,例如下面这些就是双目操作符

  • a+b – 双目操作符
  • a&b – 双目操作符
  • 3^5 – 双目操作符 这些就是双目运算符!大家只要记住双目操作符有俩个操作符,单目只有一个就好了!

表示符号

符号含义

逻辑反操作

-

负值

+

正值

&

取地址

sizeof

操作数的类型长度(以字节为单位)

~

对一个数的二进制按位取反

- -a

前置减减

a- -

后置减减

++a

前置加加

*

间接访问操作符(解引用操作符)

(类型)

强制类型转换

!

逻辑反操作

a++

后置加加

代码语言:javascript
复制
int flag = 0;
	if (flag == 0)
	{
		printf("hehe\n");
	}
	if (!flag)//flag 为假 打印hehe
	{
		printf("hehe\n");
	}

~ 对一个数的二进制按位取反

sizeof 操作数的类型长度(以字节为单位) sizeof 不是函数是操作符 sizeof 计算的是类型创建变量的大小,单位是字节

& 取地址

  • 间接访问操作符(解引用操作符)
代码语言:javascript
复制
int main()
{
	int a = 10;
	//pa是指针变量
	int* pa = &a;//&-取地址操作符-取出a的地址

	*pa = 20;//解引用操作符(间接访问操作符)-单目操作符-通用pa中存放的地址,找到指向的空间(内容)
	int c = *pa;

	return 0;
}

三、 关系操作符:

大于 <

小于>

!= 不等于

等于 =

大于等于 <=

>= 小于等于

!= 不等于

== 等于

四、 逻辑操作符;

&& 逻辑与

  • && || ! - 计算结果是真,使用1表示 && 操作符,左边为假,右边就不计算了

|| 逻辑或

|| 操作符,左边为真,右边就不在计算

📝全篇总结

✅ 归纳: 好了以上就是关于C语言中全部 操作符的讲解和解释啦,大家可以自己去练习一下呢!尤其是 异或操作的运算哦! 算术操作符 逻辑操作符 位移操作符 单目操作符 赋值操作符

看到这里了还不给博主扣个: ⛳️ 点赞☀️收藏 ⭐️ 关注 💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖 拜托拜托这个真的很重要! 你们的点赞就是博主更新最大的动力! 有问题可以评论或者私信呢秒回哦。

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、 算术操作符:
    • 1.1 加减乘除
    • 二、 移位操作符:
      • 2.1 计算机中整数的存储
        • 2.2 >> 右移操作符
          • 2.3 << 左移操作符
            • 2.4 &按位与
              • 2.5 |按位或
                • 2.6 ^ 按位异或
                  • ^ 按位异或应用示例:
                  • 三、 复合赋值符 :
                  • 二、单目操作符:
                    • & 取地址
                    • 三、 关系操作符:
                    • 四、 逻辑操作符;
                    • 📝全篇总结
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档