标签:类型转换 int 数据类型 float 基础 C语言 char double
数据类型
一、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
标签:类型转换,int,数据类型,float,基础,C语言,char,double 来源: https://www.cnblogs.com/liaozhelin/p/16290632.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。