鹏哥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.位操作符 // &----按(2进制…...

showdoc二次开发
showdoc用的vue版本老,需要安装老版本nodejs,比如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(中等): 思路: 双指针法,和15题差不多,就是要排除了,如果total<target则排除了更小的(left右移),如果total>target则排除了更大的(rig…...

Pikachu-Sql-Inject -基于boolian的盲注
基于boolean的盲注: 1、没有报错信息显示; 2、不管是正确的输入,还是错误的输入,都只显示两种情况,true or false; 3、在正确的输入下,输入and 1 1/and 1 2发现可以判断; 布尔盲注常用函数&…...
最后30天,你的系统集成项目管理工程师备考进度到哪儿了?
十一长假归来好! 此次归来之后,2024年下半年软考倒计时就从4字头切换到了3字头,今天距离考试还有32天! 那么问题来了,临近考试还有30天左右的时候,你的备考进度到哪里了呢? 其实无论目前你的实际…...
网络安全事件的发生,主要原因是什么
网络安全事件的发生,主要原因涉及多个方面,包括技术漏洞、人为因素、经济利益驱动、恶意软件和病毒威胁、社会工程学攻击、内部人员恶意行为、供应链安全问题以及法律法规的不完善等。以下是对这些原因的详细分析: 技术漏洞: 软件…...

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

1.Python 引入(字面量、注释、变量、数据类型、数据类型转换、标识符、运算符、字符串扩展)
一、字面量 1、基本介绍 在代码中,被写直接下来的、不需要通过变量存储的值,称之为字面量 2、常用值类型 类型说明数字(Number)整数(int),例如:10、-10浮点数(float&…...
【AI知识点】梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)
梯度消失(Vanishing Gradient) 和梯度爆炸(Exploding Gradient) 是神经网络训练中的常见问题,特别是在深层神经网络(DNN)或递归神经网络(RNN)中。这两者主要与反向传播算…...
在 ArkTS 网络请求中,重新封装一下 http 模块
在ArkTS中,重新封装http模块可以提供一个更简洁、更易于使用的API,同时隐藏底层细节,使开发者能够更专注于业务逻辑。以下是一个简单的示例,展示了如何重新封装鸿蒙系统的kit.NetworkKit中的http模块: // 创建一个新的…...

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

系统架构设计师-论文题(2021年下半年)
1.试题一 论面向方面的编程技术及其应用针对应用开发所面临的规模不断扩大、复杂度不断提升的问题,面向方面的编程Aspect Oriented Programming,AOP技术提供了一种有效的程序开发方法。为了理解和完成一个复杂的程序,通常要把程序进行功能划分和封装。一…...

selenium的webdriver常用方法和属性介绍(2)
selenium的webdriver介绍 从selenium导入webdriver模块,在pycharm中跳转webdriver模块的__init__.py文件,内容如图所示:从selenium包的子目录中导入了很多模块并做了重命名,用于支持如下 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中数据不会被持久化,它会随着Pod的结束而销…...

Cherno游戏引擎笔记(73~90)
------- scene viewport ---------- 》》》》做了两件事:设置视口和设置相机比例 》》》》为什么要设置 m_ViewportSize 为 glm::vec2 而不是 ImVec2 ? 因为后面需要进行 ! 运算,而 ImVec2 没有这个运算符的定义,只有 glm::vec2 有这个运算…...

helm 测试卸载或删除(redis)
作者:程序那点事儿 日期: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编写音乐播放器的时候,进度条关联播放音乐基本是必须的。那么在设计的过程中你可能会碰到一个奇怪的问题就是拖拽进度条的时候,可能会报错如下: 然后音乐就卡着不动了。。。 connect(ui->volume_toolButton,&VolumeToolBtn::…...

Redis:初识Redis
Redis:初识Redis Redis 介绍分布式架构Redis特性安装Redis Redis 介绍 在官网中,是如下介绍Redis的: in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and messag…...
【React】增量传输与渲染
增量传输 增量传输是一种高效的文件传输方式,其核心原理在于只传输文件中发生变化的部分,而不是整个文件。以下是增量传输的详细解析: 定义与原理: 增量传输通过比对原始文件和目标文件,找出两者之间的差异部分&#…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...