C语言数据类型
为什么要对数据进行分类?
- 现实中的数据就是自带类别属性的
- 对数据进行分类可以节约内存存储空间、提高运行速度
存储空间的单位:
单位 | 大小 |
---|---|
Bit(比特) | 存储一个二进制位,只能存储0或者1,计算机存储数据的最小单位 |
Byte(字节) | 存储八个二进制位,计算机存储数据的基本单位 |
Kb | 1024字节 |
Mb | 1024Kb |
Gb | 1024Mb |
Tb | 1024Gb |
Pb | 1024Tb |
C语言中数据分为两大类别:自建(程序员自己设计的)、内建(C语言自带的)
sizeof:可以计算类型/变量所占内存字节数
- 整型
类型名 | 字节数 | 数据范围 |
---|---|---|
signed char | 1 | -128~127 |
signed short | 2 | -32768~32767 |
signed int | 4 | 正负20亿 |
signed long | 4(32位)/8(64位) | \ |
signed long long | 8 | 正负9开头19位整数 |
unsigned char | 1 | 0~255 |
unsigned short | 2 | 0~65535 |
unsigned int | 4 | 0~40亿 |
unsigned long | 4(32位)/8(64位) | \ |
unsigned long long | 8 | 0~1开头的20位整数 |
signed为有符号,不加就代表加了,二进制最高位为符号位 0整数 1负数。
unsigned为无符号,二进制最高位作为数据位
注意:由于定义无符号数据时比较麻烦,标准库中把这些类型重新定义成了新的类型名
需要包含头文件<stdint.h>
uint8_t uint16_t uint32_t uint64_t
int8_t int16_t int32_t int64_t
- 浮点型
类型名 | 字节数 | 精度 |
---|---|---|
float | 4 | 单精度浮点型 |
double | 8 | 双精度浮点型 |
long double | 12(32位)/16(64位) | \ |
注意:采用科学计数法、在二进制与真实数据之间需要进行换算过程,因此浮点数的运算使用速度比整型要慢得多,所以编程时尽量使用整型
注意:大部分操作系统只对小数点后6位有效
- 模拟型
-
字符型:char
字符就是图案或符号,字符在内存中依然存储成整数,需要显示成字符时,操作系统会根据ASCII码表中的对应关系把整数显示成对应的符号或图案显示类型 占位符 整数 %hhd 字符 %c -
布尔型:bool
先有的C语言后有的bool类型,C语言中不可能有真正的布尔类型,都是在<stdbool.h>中对布尔类型使用整数进行模拟
-