数据类型

数据类型分类

整数类型

整数类型包括有符号整数和无符号整数。

有符号整数包括正整数、负整数和零。

无符号整数包括正整数和零。

浮点数类型

浮点数类型包括单精度浮点数和双精度浮点数。

单精度浮点数是指小数点后有7位有效数字的浮点数,双精度浮点数是指小数点后有15位有效数字的浮点数。

字符类型

字符类型包括字符、字符串和布尔值。

字符类型是指单个的ASCII码字符,字符串类型是指由零个或多个字符组成的序列,布尔值类型是指只有两个值,真或假。

其他类型

以后补充。

整形类型取值范围表(字符型char)

整形类型取值范围表如下:

浮点型类型取值范围表

浮点型类型取值范围表如下:

课堂难点(溢出)

整数溢出

以整形溢出举例。

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main()
{
unsigned chara = 255;
printf("%d\n", a); //输出255
a = a + 1; //a=0
printf("%d\n", a); //输出0
return 0;
}

为什么会出现这种情况呢?

我们从内存入手,unsigned char型变量占1个字节(8比特)。每个比特可以表示0或1,(unsined char为无符号整数,不考虑符号位)取值范围为0~2^8-1=255.
可以想象,有8个格子,每个格子可以表示一个比特,那么我们可以把8个格子排成一排,从左到右依次编号为7到0.
当我们给a赋值255时,实际上是把8个格子中的第7个格子都置为1即a=255=11111111。若再给a加1,追高位进位,格子不够用被挤出,8个格子都变为0,即a=00000000。(注负数后续补充)

图例;