C语言关键数据类型

一、数据类型分类与解析

1.分类

数据类型大体分为内置类型自定义类型,本文以内置类型为主自定义类型常见的是数组现阶段了解就行了,而内置类型主要分为字符型、整型、浮点型、布尔型
newlearn

2.各数据类型的范围

字符型char的范围:需要稍微知道记住的,一个char变量所存内存大小是一个字节(八位)范围是在-27~27-1,就是-128 ~127
整形的范围: 整形分为短整型short (int)、整型int、长整型long (int)、长长整型long long (int)
整型的最大最小值大致可以推,以有多少字节然后得到多少位二进制,再以二进制计算数值,大致上不要死记硬背俗话说吃多少饭用多大碗,在编程上也是一样,有多大的数值就用多大的类型
短整型变量所存内存大小是两个字节(十六位)范围是在-215~215-1
整型变量所存内存大小是四个字节(三十二位)范围是在-231~231-1
长整型变量所存内存大小是四个字节(三十二位)范围是在-231~231-1
长长整型变量所存内存大小是八个字节(六十四位)范围是在-263~263-1
最小最大值如图所示:
MAXMIN

使用库函数limits.h即可查字符型与整型的最大最小值

浮点型的范围: 浮点型又分为单精度浮点型双精度浮点型,浮点型就是说小数点可以浮动,本质上是一个小数,因为在正常情况下小数并不需要太大内存,所以范围就不用有太多了解,但是要知道的是单精度浮点型变量是占四个字节双精度浮点型占八个字节
所谓单精度双精度就是小数点后几位的精确度计算机是以二进制数来存放内容的,一些小数是无法很准确的记录小数数值,这时候要精确到小数点后几位来近似代表这个值,而单精度就是小数点后七位有效双精度就是可以精确显示小数点后十六位有效,当然,这都是十进制下小数点后几位有效
fra
正常情况下,无论是double型还是float型,没要求的情况下只会打印后六位,但精度是确确实实存在的,可能只有计算的时候才能体现出精度的重要性与准确性
布尔型的范围: 布尔类型变量在C语言中只占一个字节只会存0与1,这时要说的就是非0就是真,真就是1,所以只要给个整型的数值进去,到最后输出的也是1
bool

二、内置类型各种细节

1. 字符型

字符型:代表一个字符的类型,规则是,以数字代表字符,所以字符型在地址所存的还是一个数字以ASCII码数字对应字符,可以直接给一个数字,也可以直接给一个字符,如下所示
以数字65代表大写字母A:

char c = 65;

直接给字母小写a:

char c = 'a';

效果如图
char
字符型需要大概记住字符‘0’、‘A’、‘a’所存分别数值是48、65、97大写字符‘A’加32就是小写字符‘a’的值大写英文字符加32就是小写英文字符的值,数字0~10是连贯的,字母大写是连贯的,小写也是连贯的,当然,需要的时候查ASCII码表就好了
Aa0
注意:打印字符时所用的占位符是%c,代表是单个字符输出,当占位符为%d打印时,变量却是字符型时,所打印的就是对应的ASCII码值

2. 整型

整型: 整型变量是最常用的变量,循环结构和分支结构通常以整数为判断条件判断
而整型在使用时主要的是注意范围,也就是防止向下和向上溢出
full
full1
向下与向上溢出,规则是使用他们二进制进行相加或相减,数值太大时进行运算再存回一样大的空间时就会溢出,最后的值就不是想要的正确的值
注意:整型变量打印是用占位符%d打印,短整型打印用%hd,长整型打印用%ld,长长整型打印用%lld,大的占位符通常可以打印小的变量,但小的占位符打印大的数据可能会丢失数据

3. 浮点型

浮点型: 使用时注意使用float定义变量时初始化需要在数值后面加个f

float num = 0.256f;

如果没有字符f,会出现警告说从double转换float时截断,计算机自认为一个小数是double类型
但如果定义的是double类型就不用有什么问题
注意:打印float变量时占位符为%f,打印double变量时占位符为%lf

三、有符号signed与无符号unsigned

计算机储存数值时通常是最高位为符号位最高位0代表正数,1代表负数
而且计算机存储负数时是以补码来存的,运算也是补码相加减,但并不干扰我们使用
有符号就代表着有正负号,而无符号就代表只有正数的那一边
有符号是常规数值范围,而无符号最小值就为0,最大值为常规范围最大值的两倍加1
如图所示
MAX
定义无符号字符变量的好处是,当我不需要负数时,我的正数那部分也扩大了一倍,这样可以省存储空间,就是不需要更大的类型来装这个数值

四、番外,强转!

强制转换就是把一个数据类型强行转换成另外的类,可以把较小的数据类型转换成较大的数据类型,也可以用较大的类型转换成较小的类型
这里的较小较大的意思是字节的大小!!!
格式如下:

	type mane = number;
	type conversion = (type)mane;

当小的类型转换成大的类型时,并不会有什么数据丢失
但当大的类型转换成小的类型时,数据就发生截断,以二进制表示的数据就会从高位开始截断
比如说一个八个字节的数据long long int 强制转换成四位字节的int时,高四位字节的数据就会丢失
如果截断的long long int 最高位为1时,那么int会是一个负数
如下所示:
conversion
注意:浮点数强转转换成整数类型时,小数部分就会截断,只会保留了整数部分
如下所示:
conversion
可以看出十进制整型打印还能打印出来,整型对于浮点数打印如果可以打印就会显示3.000000,但看到警告,而且无法打印,所以也看不到后面情况,但是整型变量百分百是没有小数部分的
俗话说强扭的瓜不甜,数据不是很依赖强制转换,适当使用

五、结语

这文章应该是逻辑不清晰了,存在一定的问题,个人见解的数据类型,可以适当参考,如有问题,请包涵并指出来
怪我逻辑差
嗯哼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值