前言:
? ? ? ? 我们常常在写C语言程序时,总离不开去定义变量。也许需要定义一个整形的,又或是定义一个浮点型的.....那么这时候就需要数据类型啦!又或许你常常因为没有使用合适正确的数据类型造成运行结果溢出等等一些问题。关于常见的一些数据类型(int,char...)大家可能都知道,那么他们的大小、数值范围是多少呢,我们该怎么去具体选择呢,一起来康康叭!
一、数据类型分类
? ? ? 首先,先来整体介绍一下C语言的数据类型分类。
1.基本类型: (1)整型类型。整型类型包含:基本整型(int)、短整型(short?int)、长整型(long?int)、双长整型(long?long?int)、字符型(char)和布尔型(bool)。 注:整型数据可在类型符号前面加修饰符:signed(有符号整数类型)和unsigned(无符号整数类型),若不指定则默认为“有符号类型”。 (2)浮点类型。浮点类型包含:单精度浮点型(float)、双精度浮点型(double)和复数浮点型(单精度复数浮点型(float_complex)、双精度复数浮点型(double_complex)和长精度复数浮点型(long?long_complex))。 2.枚举类型: (1)枚举类型。枚举类型就只有枚举类型(enum)。 3.空类型: (1)空类型。空类型就只有空类型(void)。 4.派生类型: (1)派生类型。派生类型包含:指针类型(*)、数组类型([])、结构体类型(struct)、共用体类型(union)和函数类型。
? ? ? 这里放一张自己画的思维导图叭,便于大家更清楚明易地了解。
二、基本数据类型
? ? ? ? 这里我们对常用的基本数据类型(整型数据类型、字符数据类型和浮点型数据类型)做一个详细的了解探讨,包括他们的数据类型大小、数值范围以及打印类型等等。
1.数据类型大小
(1)计算机中常用存储单位
说到大小,那么我们就先来简单了解一下计算机中常见的存储单位叭,便于后面知识的更好理解。
? ? ? ? 从图表中,我们可以看到,最小的存储单位为bit(位或者比特),即为二进制数所存储的位。比位大一点的单位为byte(字节),且1字节=8位。
?(2)数据类型大小
? ? ? ?关于求出他们的数据类型大小,我们需要用到C语言中的一个函数sizeof,这里不对这个函数作过多详细解释,你只需要知道,这个函数的作用是可以求出?个对象(数据类型或者数据对象)的长度(即占?内存的??,以byte为单位)。注意是以字节为单位。
? ? ?下面我们展示一下代码及运行结果。
#include <stdio.h>
int main()
{
printf("short:%d\n",sizeof(short));
printf("unsgned short:%d\n", sizeof(unsigned short));
printf("int:%d\n", sizeof(int));
printf("unsigned int:%d\n", sizeof(unsigned int));
printf("long:%d\n", sizeof(long));
printf("unsigned long:%d\n", sizeof(unsigned long));
printf("long long:%d\n", sizeof(long long));
printf("unsigned long long:%d\n", sizeof(unsigned long long));
printf("float:%d\n", sizeof(float));
printf("double:%d\n", sizeof(double));
printf("char:%d\n", sizeof(char));
return 0;
}
?
?由运行结果可知:
char类型的数据类型大小为1字节即8位。
short类型的数据类型大小为2字节即16位。
int类型、long类型、float类型的数据类型大小为4字节即32位。
long long类型、double类型的数据类型大小为8字节即64位。
注意,若整数数据类型前面加unsigned即为无符号整数数据类型,数据类型大小不变。
(3)符号位
? ? ? ?前面我们提到计算机最小的存储单位为bit(位或比特),即二进制数所存储的位。但是对于有符号整数数据类型和无符号整数数据类型,这些存储的“位”具体的意义是不同的。
? ? ? 有符号整数数据类型的存储单元中,左边第一位表示符号位,其余位用来存放数值(如果第一位为0,表示该数为正数;如果第一位为1,表示该数为负数)而无符号整数数据类型所有的位数都是用来存放数值的。比如,long int类型变量有32位存储位数,除去左边第一位表示符号位,剩下表示数值的只有31个比特位,而unsigned long int类型变量,32位都用来存放数值。
2.数据类型的数值范围
? ? ? ? ? 这里同样以一个图表进行展示,可在使用时用来查阅~
?3.打印输出类型
?总结:
? ? ? ? ? ?当我们在定义变量时,选择正确合适的数据类型,既可以提高空间利用率,同时也可以避免溢出等问题的出现。今天关于数据类型的介绍就这么多啦,我们下次博客见咯~~
|