C 语言 整型溢出、char、浮点数存储

人机协作新纪元:AI会抢走IT人的饭碗吗? 产品经理用自然语言描述需求,AI将其转化为技术规格书(准确率已达89%) 阅读详情

char 相关

1. signed char(有符号 char)

范围:-128 到 127
溢出按补码循环

  • (signed char)128 → -128
  • (signed char)-129 → 127
    它们是钟形循环的

✅原理:1 字节 8 位补码,超过上限 / 下限直接截断循环。
char a; printf("%u",a);
这里会发生整数提升,a 先转 int,再按无符号打印;a 本身的值仍在 - 128~127。

2. 无符号类型 unsigned

  • unsigned int i:i 永远≥0;i >= 0 永远为真。
  • unsigned char i:范围{0 到255};i <=255恒成立。

⚠️经典坑:for(unsigned i=5; i>=0; i--) 死循环,i 永远不会小于 0。它减到-1,其实是255.

3. strlen + char 数组溢出

strlen:统计\0(ASCII=0)之前的字符个数,遇到\0立刻停止
例子:

char a[1000];
for(int i=0; i<1000; i++){
    a[i] = -1 - i;
}
strlen(a);
循环赋值,直到某个`-1-i == 0`,此时`a[i] = '\0'`,strlen 在这里截断。
实际就是找到整数为0
### 4. char 与 ASCII

✅`char`本质是 1 字节整数;**可打印 ASCII:0~127**

- `'\0'` ASCII 值 = 0
- `'A'` ASCII 值 = 65

---

## int、float 内存存储(二进制补码 / IEEE754)

### 1. int(32 位)写入内存规则

1. 数字转**补码**,补齐到 32 位存入内存

- signed int:最高位符号位
  - 符号位 = 0:正数,高位补 0
  - 符号位 = 1:负数,高位补 1
- unsigned int:无符号,全部是数值位,高位统一补 0

### 2. float 32 位 IEEE754 标准

32 位分为三段:

表格

| 1bit S 符号位 | 8bit E 阶码 | 23bit M 尾数 |
| --- | --- | --- |
前1中8后23
公式:

(V=(-1)^S  (1.M)_2 * 2^{E-127}\)
//^这个是次方的意思
- S=0 →正数;S=1→负数
- \(1.M\):隐藏整数 1,尾数 M 只保存小数点后面二进制
- 阶码偏移量:**E = 真实指数 + 127**

例子 9.0

1. \(9.0 = 1.001 \times 2^3\)
2. S=0;真实指数 = 3;E=3+127=130
3. M = 001 后面补 0 填满 23 位
4. 最终二进制:`0 | 10000010 | 00100000000000000000000`

##坑点总结

1. 有符号 char 溢出:**循环回卷**;无符号永远≥0,容易写出死循环
2. strlen 只认`\0`,数组越界访问风险
3. float 是**二进制科学计数法**,存在精度丢失(0.1 存不精确)
4. 有符号 / 无符号混合运算,全部转为无符号计算,极易踩坑

PD3.0详解 电源规则,全解!!!全解!!! 电源规则 大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。 USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。 在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。 每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P 阅读详情

相关推荐

免费 AIS船舶轨迹预测 数据集 分享 (可用于长周期轨迹预测)

论文中使用的数据由提供。有关预处理步骤的详细信息,请参阅。

qq_43747519的博客 1万+

数据存储(2)浮点型数据存储

#include<stdio.h> int main() { char a=-128; printf("%u\n",a); return 0; } char范围-128—127 -128原码10000000000000000000000010000000 反码1111111111111111111111111111011111111 补码111111111111111111111111111110000000 截断10000000——a最高位有符号char %u:.

weixin_63666347的博客 233

为什么PCB设计中的50Ω阻抗如此重要?从USB到以太网的实战解析

本文深入解析了PCB设计中50Ω特征阻抗的核心重要性及其工程权衡起源。文章从传输线理论出发,阐释了阻抗匹配对防止信号反射、确保信号完整性的关键作用,并对比了USB、以太网等不同应用场景的阻抗标准。同时,文章结合实际案例,剖析了在两层板等简单设计中实现精准阻抗控制的难点与实战解决方案。

weixin_29268385的博客 298

C 学习笔记 —— 基本数据类型详解

计算机存储方式都可归结为两大类型:整数型和浮点型。 概念:关键字11个:int, short, long, signed, unsigned, char, float, double, _Bool, _Complex, _Imaginary char : 1byte_Bool : 1bit整型分为有符号和无符号,分别用signed和unsigned修饰float _Complex double _Complex float _Imaginary double _Imaginary没有小数部分的数 下图为在计

Charles Ren's Tech Blog 1173

基于python+flask框架的基于微信小程序的CR公司建设项目信息管理系统-前台(开题+程序+论文) 计算机毕设

特别是随着移动互联网技术的普及,企业对便捷、高效的信息管理系统的需求日益迫切。另一方面,该系统集成了仓管、物料、财务、人事、供应商等多个模块,实现了数据的集中管理和信息共享,有助于企业实现精细化管理,降低运营成本,提升决策效率。:深入调研CR公司的业务需求,明确系统应具备的功能模块,包括仓管员管理模块(物料信息、退回记录、申请信息、仓库信息管理)、财务员管理模块(资金信息管理、采购与租赁款项处理)、人事管理模块、供应商管理模块、项目管理模块(项目信息、设备采购、物料采购、设备租赁)、以及考勤打卡模块等。

zhihao503的博客 960

Akamai-3.0补环境逆向-DHL快递查询

那么我们的请求过程就是:1.请求首页的html文件,通过re或xpath,提取到这个url,拼接官网地址,得到这个js文件的地址。返回的_abck为0,表示环境正确,请求搜索接口返回200,说明返回的_abck正确,如果过程错误或环境补的有问题会返回403或428这两个状态码。那么,就是这个包返回的,而且这个包需要请求两次,第一次get请求,返回的这个-1的cookie,第二次请求,带上一个sensor_data的参数,进行post请求,最终返回这个0的cookie,代表你过了akamai这个盾。

2302_76420666的博客 2858

C语言 数据类型

数据类型 1、c语言数据类型 数据类型 整形 (signed) char/ unsigned char —>字符型 char 占 1byte(字节) = 8 bits (signed) short/ unsigned short —>短整型 short 占 2byte(字节) = 16 bits (signed) int/ unsigned int —>整型 int 占 4byte(字节) = 32 bits (signed) long/ unsigned lon

qq_44387888的博客 183

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

【C语言干货】超详细图解+原理:数据在内存中的存储

本文详细讲解C语言数据在内存中的存储方式,包括原码反码补码、大小端存储、整型/字符型/浮点型的存储规则。重点阐述了整型采用补码存储的原因、大小端存储的区别、浮点数IEEE754标准及其精度问题,以及数据溢出现象。文章指出理解内存存储机制是掌握指针、类型转换等核心概念的基础,并提供了验证大小端的经典代码示例。最后总结了内存存储的6个关键点:字节寻址、补码规则、小端存储、字符ASCII码、浮点精度误差和数据溢出问题,为C语言进阶学习奠定重要基础。

2602_95178652的博客 813

Ansys 19 Mechanical 流体密封分析

start point是一个特殊的概念,在仿真中ansys将从start point开始搜索会发生流体渗漏的点,可以简单理解为从start point开始,向四周逐个节点比较节点上的接触压紧力与流体压力,如果流体压力大于压紧力,则发生渗漏。事实上此处的最后一个参数是指定start point类型的,为1代表这是一个“open”的start point。在通常情况下,如果不人为指定start point,程序会自动寻找指定流体压力面的“边界”,对于二维情况,就是曲线的两个端点,对于三维情况就是曲面的边线。

Dio980的博客 1537

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 146

C语言之数据类型总结

程序离不开数据,本文是对数据类型的一个大致了解的笔记总结

Poem_coder的博客 2652

逆强化学习:从专家示范中学习策略

逆强化学习(Inverse Reinforcement Learning,简称IRL)是强化学习(Reinforcement Learning,简称RL)的一个子领域,它的目标是从专家的行为中学习策略。在传统的强化学习中,智能体通过与环境交互,根据奖励信号来学习一个策略。而在逆强化学习中,我们没有直接的奖励信号,而是通过观察专家的行为来推断出奖励函数,从而学习到一个与专家类似的策略。逆强化学习作为强化学习的一个重要子领域,在许多实际应用场景中都取得了显著的成功。

AI天才研究院 1453

【C语言】数据在内存中的存储

整形,浮点型

lcj2511的博客,感谢你的关注,我们一起加油 438

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言复习:基本数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

weixin_73598193的博客 253

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C语言基本数据类型详解(新手入门,含示例、溢出与常见陷阱)

本文介绍了C语言中的基本数据类型,包括整型(int、short、long、long long)、字符型(char)、布尔型(bool)以及浮点型(float、double、long double)。重点说明了各种类型的存储方式(如补码表示)、字节大小和取值范围,并介绍了无符号类型的特点。文章还讲解了sizeof运算符的使用、不同类型间的混合运算规则(隐式和显式转换)以及数据溢出问题。最后补充了常量后缀的使用方法,帮助开发者明确常量类型。

球团的博客 7549

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

c语言的基本数据类型举例,C语言的基本数据类型总结

一,整型1,int类型a:int变量:int变量是有符号整数,占用一个字的大小。但是ANSI规定int类型最少占用16位 即-2^15~2^15-1(注:计算机中一个字表示最自然的存储单位) 2种声明的方法: int x; //单独声明int x, y, z; ...

weixin_42210284的博客 1384

【2个月 C 语言从入门到精通:零基础系统教程】第十三讲:数据在内存中的存储

本文深入解析C/C++中数据在内存的存储机制,重点探讨整数补码、大小端字节序和浮点数IEEE 754标准。主要内容包括:1) 整数存储采用补码形式实现统一运算;2) 大端模式(高位低址)与小端模式(低位低址)的区别及判断方法;3) 整型提升规则对类型转换的影响;4) 通过典型代码案例揭示数据存储的底层原理,如char类型在不同符号性下的整型提升差异。通过系统分析,帮助开发者深入理解内存数据表示,编写更健壮的底层代码。

专注计算机考研408,C语言入门,C++学习,分享学习笔记,代码实践,和大家一起进步 2662

c数据类型

c中数据类型分为:整型(int)、短整型(short)、长整型(long)、long long(超长整型)、浮点型(float)、双精度浮点型(double)、字符(char)、signed(有符号)、unsigned(无符号)

m0_73603951的博客 829

c语言学习:数据类型1

对于(-0:1000 0000 0000 0000 0000 0000 0000 0000)这个值最高位既充当符号位,也充当数值位。八进制-->二进制 方法: 一位八进制数 对应 三位二进制数(0-8的8421码去掉最高位0)十六进制:0~9、10-a、11-b、12-c、13-d、14-e、15-f、10~19、1a~1f。int(4字节)、short(2字节)、long(8字节)、long long(8字节)123(十进制数据)、0x123(十六进制数据)、0123(八进制数据)。

2301_80265108的博客 297

C语言基础学习——数据类型

unsigned int:0|000 0000 0000 0000 0000 0000 0000 0000 (符号位 |数值位)符号位 | 指数位 (11位) | 尾数位(52位) //指数位偏移量+1023。小端模式 //高高低低---高位数据存放在高位,低位数据存放在低位。//初始化 --- 定义变量的同时赋值。大小写转换:‘A’(65) +32 =‘a’(97)ch = ’a‘ //存放的实际是’a'对应的编码值。符号位 | 指数位(8位) | 尾数位(23位)

2303_80942634的博客 251

Day2 C语言基础——基本数据类型

C语言基础数据类型包括整型、字符型、浮点型、空类型和布尔型。整型分为short(2字节)、int(4字节)和long(8字节),各有有符号和无符号版本,遵循补码规则。字符型char(1字节)本质是整型,基于ASCII码。浮点型float(4字节)和double(8字节)遵循IEEE754标准,存在精度问题。空类型void用于函数和指针场景。布尔型需包含stdbool.h,取值为true(1)/false(0)。所有数据类型都有明确的存储结构和取值范围,使用时需注意溢出和精度问题。

2401_89550509的博客 170

C语言 02.变量类型和数据类型

1. 常量:不会变化的数据。不能被修改。 “hello”、‘A’、-10、3.1415926(浮点常量) #define PI 3.1415 【强调】:没有分号结束标记。 【推荐】 定义宏: 定义语法: #define 宏名 宏值 const int a = 10; 定义语法:const 类型名 变量名 = 变量值。 【不推荐,因为后面可以用指针改掉】 const 关键字: 被该关键字修饰的变量,表示为只读变量。 #include <stdio.h> # defi

qq_44684289的博客 363

C从入门到放弃篇4

result:result:result:result:result:result:!

Forerunner and Successor 先駆者と後継者 1444

C语言笔记归纳17:数据的存储

大端字节序:“高位字节”(钥匙的前半部分)插在 “低地址钥匙孔”,“低位字节”(钥匙的后半部分)插在 “高地址钥匙孔”;(低地址→高地址);小端字节序:“低位字节”(钥匙的后半部分)插在 “低地址钥匙孔”,“高位字节”(钥匙的前半部分)插在 “高地址钥匙孔”;(低地址→高地址);常用场景:x86 架构(PC、多数嵌入式开发板)为小端,C51 单片机、网络传输(TCP/IP)为大端。整数存储:内存存补码,正整数三码合一,负整数补码 = 反码 + 1;大小端。

yonakaame的博客 1432

深度解析C语言数据类型:从char到double的存储秘密

本文深入解析C语言基础数据类型的存储原理,分为整型、浮点型和字符型三大类。整型数据采用补码存储以简化运算,浮点型遵循IEEE 754标准拆分符号位、指数位和尾数位,字符型则以ASCII码整数值存储。通过代码示例和内存图示,详细演示了-5的补码表示、12.5的浮点存储结构及字符'A'的ASCII编码。文章还探讨了类型转换规则和数据溢出陷阱,强调合理选择数据类型对优化内存和提升性能的重要性,为深入理解程序运行机制提供了实用指导。

user340的博客 1562
上一篇: c语言:原码和补码的用法
下一篇: c语言:qsort比较函数+结构体访问(*(int*)p)
Code_Solitude
博客等级 码龄116天 1粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值