八、数据类型

 从本节开始,正式进入C语言的世界啦,话不多说,让我们开始把!!!!

八、数据类型

 
数据类型的分类,从上图可明确看出,分为基本类型、构造类型、指针类型、空类型;
这节我们重点介绍基本数据类型,即整型、浮点型和字符型;
1.整型数据类型注重两个要点:正负值及取值范围;
(1)首先让我们来一种特殊的逻辑类型,当然它是属于整型数据的一种,只有真和假,bool型,非零即为真,
关键字bool,但使用时必须加头文件<stdbool.h>,如果不加头文件,则可直接定义变量_Bool a,下划线+大写
的Bool是C99中添加的新型数据类型;
八、数据类型
如果我将stdbool.h去掉的话,就会显示未知类型名
八、数据类型
当将bool.c文件中的语句改为_Bool 就不会报错;
八、数据类型
bool 定义的变量,只能存储0和1一位的变量值;
(2)short、int、long、char、float、double这六个关键字代表C语言中六种基本数据类型,在不同的系统上,这些类型
所占据的字节长度是不同的:
在此,引入sizeof这个特殊的命令,这个命令的作用是测试数据类型在系统中所占用的字节数;
八、数据类型
 从命令的执行结果来看,
bool占据内存大小是1个byte;
short占据内存大小是2个byte;
int占据内存大小是4个byte;
long占据内存大小是4个byte;
float占据内存大小是4个byte;
double占据内存大小是8个byte;
char占据内存大小是1个byte;
(2)范围和正负值
现在以char字符型数据类型为例,来说明取值范围和正负的意义;
char类型在具体向下分呢,分为有符号和无符号,所谓有符号就是可以表示正负数,即将最高为定位为符号位;
上图中我们了解到char数据类型在内存中占用了1个byte,也就是1个字节。在计算机中,1个字节的位数规定为8位数(bit)
,即00000000——11111111;所以根据之前的二进制转化十进制,这个范围就是[email protected],就是255.这个就是无符号数可
表示的取值范围;
下面让我们再来看有符号char型,将最高位固定为符号位后,char型用来储存的位数就变为7位,即00000000——01111111
七个0到八个0,就是0-127,负数的取值范围10000000——11111111,就是-127-0,但同时,C规定,-128也被包含在取值
范围内,-128在内存的补码形式为10000000。之前我们在前几节介绍过,正数在内存中的储存方式补码就是它本身;但负数
则需要求反码、补码,最终是以补码的形式存放在内存中;
下面我们以一段程序来观察:

八、数据类型
我们对这段程序进行编译,结果如下:八、数据类型
显示的数值为-128,为什么会这样呢?
分析:由于我们程序中申请了有符号型char 变量a,它的取值范围是-128——127,所以当我们把数值128存储在变量a中,
我们看下,128在内存中存储的值是什么样的:
变量a能储存的最大值为7个1,即01111111,现在将在存入128,再加1,即变为10000000,就变成了-128在内存中的存储
补码,所以输出值为-128;
关于其他基本数据类型及其他数据类型,会在后续课程笔记里一一体现;