【C语言基础】数据类型
数据类型
一、singed int/unsigned int
都占用 4 个字节,即:32bit
singed int取值范围:-2^31 ~ 2^31-1
unsigned int: 取值范围:0 ~ 2^32
数据以补码的形式存放在内存中
二、float/double
float:占用4个字节(32bit)
double:占用8个字节(64bit)
浮点数在计算机中,用科学计数法表示,在现实中,一个科学计数法的数字可以被写为: (a=1~9)
推广到二进制中,可以写成:
(a=1)
eg:
float a = 0.15625;
十进制小数写成二进制,乘2取整,顺序排列:
二进制小数结果为0.00101,为了调整成整数位为1的形式,需要左移3位,因此结果可以表示成:
指数位为-3,偏移+127得到指数位置结果为124,即 0111 1100。
因此float能表示数据的范围就可以知道了,最大最小数值为:
逼近
转化为十进制为:
因此float常说的数字表示范围如下:
double和float类似,不再赘述
三、char
占用1个字节(8bit)在内存中直接存ASCII码:
例如char a = ‘1’,ASCII码为49,转为16进制为0X31,但是当char a = 1时,存的就是1
一般用char型数组存字符串。
四、数据类型转换
4.1 自动(隐式)转换
自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生:
-
转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低
-
所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算
-
char 和 short 参与运算时,必须先转换成 int 类型。
4.2 强制类型转换
强制类型转换的格式为:
(type_name) expression
type_name
为新类型名称,expression
为表达式
强转有时候会出现不可预料的后果。
五、数据类型-寄存器
在C语言编程中,定义的所有数据类型的数据都是以补码的形式存在内存中,但是单片机是怎么知道哪个是char哪个是int呢?
这个就是汇编中的知识了,基本的汇编数据类型可没有浮点型,这个还在研究中。
参考:
cnblogs.com/xiglingui/p/14802623.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)