当前位置: 首页 > news >正文

鹏哥C语言68-70---位操作符+单目操作符+关系操作符

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <time.h>

//--------------------------------------------------------------------------------------------------------4.位操作符
// &----按(2进制补码)位与(全1 为 1)
// |  ----按(2进制补码)位或(有1则1,全0则0)
//^ ----按(2进制补码)位异或(相同为0,相异为1)
//------------------------------- &----按(2进制补码)位与

int main()
{int a = 3; //32个bit位//00000000000000000000000000000011-------3的补码int b = -5;//10000000000000000000000000000101-------  -5的原码//11111111111111111111111111111010-------  -5的反码//11111111111111111111111111111011-------  -5的补码int c = a & b;//00000000000000000000000000000011-------3的补码//11111111111111111111111111111011-------  -5的补码//3的补码和-5的补码按位与&(同时为1才为1)//00000000000000000000000000000011---高位为0,是正数,正数原反补相同 3printf("c=%d\n", c);  // 输出3//%d代表打印一个有符号的整数(原码)int d = a | b;//00000000000000000000000000000011-------3的补码//11111111111111111111111111111011-------  -5的补码//3的补码和-5的补码按位或 |(有1则1,全0则0)//11111111111111111111111111111011---高位为1,是负数,找源码//10000000000000000000000000000101---   -5printf("d=%d\n", d);  // 输出-5int e = a ^ b;//00000000000000000000000000000011-------3的补码//11111111111111111111111111111011-------  -5的补码//3的补码和-5的补码按位或 ^(相同为0,相异为1)//11111111111111111111111111111000---高位为1,是负数,找源码//10000000000000000000000000001000---   -8printf("e=%d\n", e);  // 输出-8return 0;
}

// 不创建临时变量,实现两个数的交换
//3^3
//011
//011
//000=0
//0^5
//000
//101
//101=5
//3^3^5=5
//3^5^3
//011
//101
//110
//011
//101=5
//异或^操作符支持交换律//实际的开发过程中,通常用方法1,创建临时变量去实现两个数的交换

int main()
{int a = 3;int b = 5;//方法1(创建临时变量)int c = 0;printf("交换前a=%d b=%d\n", a, b);c = a;a = b;b = c;printf("交换后a=%d b=%d\n", a, b);//方法2(可能会有溢出)printf("交换前a=%d b=%d\n", a, b);a = a + b;b = a - b;a = a - b;printf("交换后a=%d b=%d\n", a, b);//方法3(异或^操作符)printf("交换前a=%d b=%d\n", a, b);a = a ^ b;//a=3^5b = a ^ b;//b=3^5^5-->b=3a = a ^ b;//a=3^5^3-->a=5printf("交换后a=%d b=%d\n", a, b);return 0;
}

//--------------------------------------------------------------------练习
//编写代码实现:求一个整数存储在内存中的二进制中 1的个数
//求补码中1的个数

int main()
{int a = 0;scanf("%d", &a);return 0;
}

//---------------------------------------------------------------------------------------------------------5.赋值操作符
//=赋值
//与==判断相对 区分


//---------------------------------------------------------------------------------------------------------6.单目操作符
//单目操作符只有1个操作数
!          逻辑反操作
-          负值
+         正值
&        取地址
sizeof  操作数的类型长度(以字节为单位)
~        对一个数的二进制按位取反
--        前置、后置 --
++      前置、后置++
*         间接访问操作符(解引用操作符)
(类型)  强制类型转换
//---------------------------------------------------------------------------------------------------6.1 操作符介绍

int main()
{//---------------------------------------------操作符 !int flag = 3;//C语言中,0表示假,非0表示真if (flag) // 如果flag为真,进入if{}if (! flag) // 如果flag为假,进入if{}//---------------------------------------------操作符   +int a = +10;int b = +a;printf("%d\n", a); //10printf("%d\n", b); //10// --------------------------------------------操作符   -int c = -10;int d = -c;printf("%d\n", c); //-10printf("%d\n", d); //10//----------------------------------------------操作符   &printf("%p\n", &a);//a是整型,占4个字节,取地址取的是第一个字节的地址int* p = &a;  //p就是指针,p的类型是int*,表示p是指针变量//---------------------------------------------操作符  sizeof// 计算的变量所占内存的大小int n = sizeof(a); //计算 a 所占内存的大小,单位是字节printf("%d\n", n);// 4  // 计算类型所创建的变量占据空间的大小int m = sizeof(int);printf("%d\n", m);// 4  // 计算整个数组的大小int arr[10] = { 0 };printf("%d\n", sizeof(arr)); //40//----------------------------------------------操作符  ~  //按位取反(二进制位)int x = 0;printf("%d\n", ~x);// -1//00000000000000000000000000000000 ---0的补码//11111111111111111111111111111111 ---按位取反//还原成源码 -1再取反//11111111111111111111111111111110//10000000000000000000000000000001--- -1int y = 3;printf("%d\n", ~y);// -4//00000000000000000000000000000011--- 3的补码//~3//11111111111111111111111111111100--- 补码//恢复原码//11111111111111111111111111111011//10000000000000000000000000000100----4return 0;
}

//--------------------------------------------------------------------------------------练习
//把2进制位里的0改成1,就用 | 或上1
//把2进制位里的1改成0,就用 & 与上0

int main()
{int z = 13;z |= (1 << 1);//00000000000000000000000000001101---13的补码//  |  (全1则1)//00000000000000000000000000000010(可以由 1的补码向左移动1位 得到这个)// =//00000000000000000000000000001111--15printf("%d\n", z); //15//把2进制位里的0改成1,就用 |或上1int p = 13;p |= (1 << 4);//00000000000000000000000000001101---13的补码// |(有1则1,全0则0)//00000000000000000000000000010000(可以由 1的补码向左移动1位 得到这个)// =//00000000000000000000000000011101---29的补码printf("%d\n", p); //29p &= ~(1 << 4);//00000000000000000000000000011101---29的补码//&(全1 为 1)//11111111111111111111111111101111(由00000000000000000000000000010000按位取反得到)//=//00000000000000000000000000001101---13的补码printf("%d\n", p); //13return 0;
}
test()
{}int main()
{//-------------------------------------------------操作符  ++  int a = 3;int b = ++a; //前置++, 先++,后使用//a=a+1,b=aprintf("a=%d\n", a); // 4printf("b=%d\n", b);// 4int c = 3;int d = c++; //后置++, 先使用,后++// d=3, c=3+1printf("c=%d\n", c); // 4printf("d=%d\n", d);// 3//-------------------------------------------------操作符  --  int aa = 3;int bb = --aa; //前置--, 先--,后使用//aa=aa-1,bb=aaprintf("aa=%d\n", aa); // 2printf("bb=%d\n", bb);// 2int cc = 3;int dd = cc--; //后置--, 先使用,后--// dd=3, cc=3-1printf("cc=%d\n", cc); // 2printf("dd=%d\n", dd);// 3int x = 10;printf("%d\n", x--); //10 因为x先使用,使用完再--printf("%d\n", x); // 9int y = 10;test(y--); //调用函数,test接收到的 y 是10,因为是先使用,后--printf("%d\n", y); //9//-----------------------------------------------操作符 *  //间接访问操作符(解引用操作符),与指针配合使用int z = 10;int* p = &z; //把 z 的地址存到 p 中*p; //通过p的地址,找到他所指向的对象 10printf("z=%d\n", z);        //10printf("&z=%p\n", &z);  //00000001774FFA84printf(" p=%d\n", p);      //00000001774FFA84printf("*p=%d\n", *p);    //10return 0;
}
int main()
{//-----------------------------------------------()  强制类型转换int a = (int)3.14; //把3.14强制转化为整型printf("%d\n", a);//  3//随机数的生成srand((unsigned int)time(NULL));//把srand 的返回值强制转换为 unsigned intreturn 0;
}

//sizeof是操作符,不是函数
//strlen是库函数,用来求字符串长度

int main()
{int a = -10;int* p = NULL;printf("%d\n", !2);printf("%d\n", !0);a = -a;p = &a;printf("%d\n", sizeof(a));printf("%d\n", sizeof(int));printf("%d\n", sizeof a);//这样写行不行?   可以,证明了 sizeof是操作符,不是函数,函数后的括号不可以省略//printf("%d\n", sizeof int);//这样写行不行?  不可以return 0;
}

//---------------------------------------------------------------------------------6.2 sizeof 和 数组

void test1(int arr[])
{printf("sizeof(arr)(2)=%d\n", sizeof(arr));//(2)--8 /4
}void test2(char ch[])
{printf("sizeof(ch)(4)%d\n", sizeof(ch));//(4)--8 / 4
}int main()
{int arr[10] = { 0 };char ch[10] = { 0 };printf("sizeof(arr)(1)=%d\n", sizeof(arr));//(1)---40printf("sizeof(ch)(3)=%d\n", sizeof(ch));//(3)---10test1(arr);test2(ch);return 0;
}

// (1)(2)(3)(4)分别输出多少
//(x64环境下,一个地址8个字节)
//(x86环境下,一个地址4个字节)


//--------------------------------------------------------------------------------------------------7. 关系操作符
//>
//>=
//<
//<=
//!=   用于测试不相等
//==  用于测试相等

//两个字符串比较相等用 strcmp 库函数

//-----------------------------------------------------------------------------------------------------8. 逻辑操作符
//&&
//  ||
 

相关文章:

鹏哥C语言68-70---位操作符+单目操作符+关系操作符

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <time.h> //--------------------------------------------------------------------------------------------------------4.位操作符 // &----按&#xff08;2进制…...

showdoc二次开发

showdoc用的vue版本老&#xff0c;需要安装老版本nodejs&#xff0c;比如node 14.21.3 win32-x64-93_binding.node问题 https://github.com/sass/node-sass/releases 下载 web_src\node_modules\node-sass\vendor\win32-x64-93 下面重命名为binding.node 代理到php后端&…...

力扣16~20题

题16&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 双指针法&#xff0c;和15题差不多&#xff0c;就是要排除了&#xff0c;如果total<target则排除了更小的&#xff08;left右移&#xff09;&#xff0c;如果total>target则排除了更大的&#xff08;rig…...

Pikachu-Sql-Inject -基于boolian的盲注

基于boolean的盲注: 1、没有报错信息显示&#xff1b; 2、不管是正确的输入&#xff0c;还是错误的输入&#xff0c;都只显示两种情况&#xff0c;true or false&#xff1b; 3、在正确的输入下&#xff0c;输入and 1 1/and 1 2发现可以判断&#xff1b; 布尔盲注常用函数&…...

最后30天,你的系统集成项目管理工程师备考进度到哪儿了?

十一长假归来好&#xff01; 此次归来之后&#xff0c;2024年下半年软考倒计时就从4字头切换到了3字头&#xff0c;今天距离考试还有32天&#xff01; 那么问题来了&#xff0c;临近考试还有30天左右的时候&#xff0c;你的备考进度到哪里了呢&#xff1f; 其实无论目前你的实际…...

网络安全事件的发生,主要原因是什么

网络安全事件的发生&#xff0c;主要原因涉及多个方面&#xff0c;包括技术漏洞、人为因素、经济利益驱动、恶意软件和病毒威胁、社会工程学攻击、内部人员恶意行为、供应链安全问题以及法律法规的不完善等。以下是对这些原因的详细分析&#xff1a; 技术漏洞&#xff1a; 软件…...

【leetcode】274.H指数

为了方便&#xff0c;将 citations 记为 cs。 所谓的 h 指数是指一个具体的数值&#xff0c;该数值为“最大”的满足「至少发表了 x 篇论文&#xff0c;且每篇论文至少被引用 x 次」定义的合法数&#xff0c;重点是“最大”。 用题面的实例 1 来举个 &#x1f330;&#xff0…...

1.Python 引入(字面量、注释、变量、数据类型、数据类型转换、标识符、运算符、字符串扩展)

一、字面量 1、基本介绍 在代码中&#xff0c;被写直接下来的、不需要通过变量存储的值&#xff0c;称之为字面量 2、常用值类型 类型说明数字&#xff08;Number&#xff09;整数&#xff08;int&#xff09;&#xff0c;例如&#xff1a;10、-10浮点数&#xff08;float&…...

【AI知识点】梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)

梯度消失&#xff08;Vanishing Gradient&#xff09; 和梯度爆炸&#xff08;Exploding Gradient&#xff09; 是神经网络训练中的常见问题&#xff0c;特别是在深层神经网络&#xff08;DNN&#xff09;或递归神经网络&#xff08;RNN&#xff09;中。这两者主要与反向传播算…...

在 ArkTS 网络请求中,重新封装一下 http 模块

在ArkTS中&#xff0c;重新封装http模块可以提供一个更简洁、更易于使用的API&#xff0c;同时隐藏底层细节&#xff0c;使开发者能够更专注于业务逻辑。以下是一个简单的示例&#xff0c;展示了如何重新封装鸿蒙系统的kit.NetworkKit中的http模块&#xff1a; // 创建一个新的…...

Microsoft 更新 Copilot AI,未來將能使用語音並看到你瀏覽的網頁

不過受到 Recall 事件的影響&#xff0c;更新的推出將更緩慢謹慎。 Microsoft 也同步對其網頁版及行動版的 Copilot AI 進行大改版。這主要是為網頁版換上了一個較為簡單乾淨的介面&#xff0c;並增加了一些新的功能&#xff0c;像是 Copilot Voice 能讓你與 AI 助手進行對話式…...

系统架构设计师-论文题(2021年下半年)

1.试题一 论面向方面的编程技术及其应用针对应用开发所面临的规模不断扩大、复杂度不断提升的问题&#xff0c;面向方面的编程Aspect Oriented Programming,AOP技术提供了一种有效的程序开发方法。为了理解和完成一个复杂的程序&#xff0c;通常要把程序进行功能划分和封装。一…...

selenium的webdriver常用方法和属性介绍(2)

selenium的webdriver介绍 从selenium导入webdriver模块&#xff0c;在pycharm中跳转webdriver模块的__init__.py文件&#xff0c;内容如图所示&#xff1a;从selenium包的子目录中导入了很多模块并做了重命名&#xff0c;用于支持如下 Chrome/Edge/Ie/Firefox/Safari浏览器。 使…...

73.【C语言】C/C++的内存区域划分

目录 1.内存里的几个区域 2.示意图 3.解释 1.内存里的几个区域 除了耳熟能详的栈区,堆区,静态区,还有内核空间,内存映射段,数据段,代码段 2.示意图 3.解释 栈区(stack area):局部变量,函数参数,返回数据,返回地址 内存映射段:将文件映射到内存 映射的含义: 如果看过李忠…...

k8s 中存储之 hostPath 卷

目录 1 hostPath 卷介绍 2 hostPath 卷实际应用操作 2.1 创建 pod 资源类型 2.2 修改清单文件增加 hostPath 对应的参数配置 2.3 查看是否创建 卷 和 pod 2.4 创建发布文件测试是否正常访问 1 hostPath 卷介绍 EmptyDir中数据不会被持久化&#xff0c;它会随着Pod的结束而销…...

Cherno游戏引擎笔记(73~90)

------- scene viewport ---------- 》》》》做了两件事&#xff1a;设置视口和设置相机比例 》》》》为什么要设置 m_ViewportSize 为 glm::vec2 而不是 ImVec2 ? 因为后面需要进行 ! 运算&#xff0c;而 ImVec2 没有这个运算符的定义&#xff0c;只有 glm::vec2 有这个运算…...

helm 测试卸载或删除(redis)

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/02/07 18:30 查看redis 集群实例 kubectl get all -n redis 卸载集群实例 helm uninstall redis -n redis 删除pvc kubectl get pvc -n redis kubectl delete pvc redis-data-redis-master-0 redis-data-redis-replicas…...

关于Qt音乐播放器进度条拖拽无用的问题解决方案

在使用Qt编写音乐播放器的时候&#xff0c;进度条关联播放音乐基本是必须的。那么在设计的过程中你可能会碰到一个奇怪的问题就是拖拽进度条的时候&#xff0c;可能会报错如下&#xff1a; 然后音乐就卡着不动了。。。 connect(ui->volume_toolButton,&VolumeToolBtn::…...

Redis:初识Redis

Redis&#xff1a;初识Redis Redis 介绍分布式架构Redis特性安装Redis Redis 介绍 在官网中&#xff0c;是如下介绍Redis的&#xff1a; in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and messag…...

【React】增量传输与渲染

增量传输 增量传输是一种高效的文件传输方式&#xff0c;其核心原理在于只传输文件中发生变化的部分&#xff0c;而不是整个文件。以下是增量传输的详细解析&#xff1a; 定义与原理&#xff1a; 增量传输通过比对原始文件和目标文件&#xff0c;找出两者之间的差异部分&#…...

【回眸】Tessy 单元测试软件使用指南(四)常见报错及解决方案与批量初始化的经验

前言 分析时Tessy的报错 1.fatal error: Tricore/Compilers/Compilers.h: No such file or directory 2.error: #error "Compiler unsupported" 3.warning: invalid suffix on literal;C11 requires a space between literal and string macro 4.error: unknown…...

2024 - 10 :生物药学: 如何获取对应核心靶点基因的激酶

如何获取对应核心靶点基因的激酶 步骤 1&#xff1a;收集蛋白质信息 获取 UniProt ID&#xff1a; 对于每个基因&#xff0c;使用 UniProt 数据库获取其对应的蛋白质信息&#xff0c;包括 UniProt ID、序列和功能注释。UniProt 网站&#xff1a;https://www.uniprot.org/ 示…...

STM32 HAL库UART查询方式实例

本文中介绍USART编程涵盖了三种主要方法&#xff0c;详细介绍STM32F407微控制器结合HAL库&#xff0c;通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时&#xff0c;系统才会反馈“密码正确”的确认信息。反之&…...

数据结构--线性表双向链表的实现

目录 思路设计 总体思维导图 插入部分 头插法尾插法 任意位置插入 删除部分 头结点 尾节点 中间节点 只有头结点且删除的就是头结点 ​编辑 清空链表部分 遍历清空链表的所有节点 不遍历清空 各部分代码 Main部分 MyListedList部分 IndexOutOfException部分 …...

第一个Flutter应用(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范&#xff0c;其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码&#xff08;为了阅…...

批量查询快递单号物流信息:高效掌握最后更新动态

在电商和物流行业蓬勃发展的今天&#xff0c;快递单号的物流信息追踪显得尤为重要。对于商家和客户来说&#xff0c;了解包裹的最后更新物流状态是确保货物安全、及时送达的关键。本文将介绍如何批量查询快递单号的物流信息&#xff0c;帮助您高效掌握每个包裹的最新动态。 1运…...

随着硬件水平的提升,LabVIEW有哪些过去的编程方法被淘汰掉了

随着硬件水平的不断提升&#xff0c;尤其是处理器性能、存储能力、通信速度等方面的飞跃&#xff0c;LabVIEW的一些早期编程方法逐渐被更高效、现代的编程技术所取代。以下是一些随着硬件升级而逐步淘汰的LabVIEW编程方法和技术&#xff1a; 1. 低效的数据流传输方式 过去由于…...

Leetcode 206.反转链表

题目链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述: 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 解题思路…...

基于springboot和vue.js 养老院管理系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm springcloud等开发框架&#xff09; vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆…...

高效数据处理:MapReduce与Hive的实战应用

文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2&#xff1a;创建dwd层数据表step3&#xff1a;创建d…...