C 数据类型
1.基本概念
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
序号 | 类型与描述 |
---|---|
1 | 基本类型: 它们是算术类型,包括:整数类型、浮点类型、字符类型、布尔类型、枚举类型。 |
2 | 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 |
3 | void 类型: 类型说明符 void 表明没有可用的值。 |
4 | 派生类型: 它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。 |
2.基本数据类型取值范围
2.基本数据类型取值范围
- 整数类型
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
- 浮点类型
类型 | 存储大小 | 值范围 |
---|---|---|
float | 4 字节 | 1.2E-38 到 3.4E+38 |
double | 8 字节 | 2.3E-308 到 1.7E+308 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 |
3.void类型
void类型指定没有任何可用的值。它通常用于以下三种情况下:
序号 | 类型与描述 |
---|---|
1 | 函数返回为空: C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status); |
2 | 函数参数为空 :C 中有各种 函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void); |
3 | 指针指向 void :类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。 |
4.数的表示方式
4.1 比特位和字节
- CPU能读懂的最小单位(只能存放0和1)—— 比特位,bit,b。
- 内存机构的最小寻址单位 —— 字节,Byte,B。
- 1Byte == 8bit。
- 一个字节可以表示最大的数是:1111 1111。
4.2 二进制、八进制、十进制、十六进制
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
1 | 0000 | 000 | 0X00 |
2 | 0001 | 001 | 0X01 |
3 | 0010 | 002 | 0X02 |
4 | 0011 | 003 | 0X03 |
5 | 0100 | 004 | 0X04 |
6 | 0101 | 005 | 0X05 |
7 | 0110 | 006 | 0X06 |
8 | 0111 | 007 | 0X07 |
9 | 1000 | 010 | 0X08 |
10 | 1001 | 011 | 0X09 |
11 | 1010 | 012 | 0X0A |
12 | 1011 | 013 | 0X0B |
13 | 1100 | 014 | 0X0C |
14 | 1101 | 015 | 0X0D |
15 | 1110 | 016 | 0X0E |
16 | 1111 | 017 | 0X0F |
4.3 符号位
- 存放singned类型的存储单元中,左边第一位表示符号位。
- 符号位为0,该数为正数,符号位为1,该数为负数。
- 一个32位的整形变量,除去左边第一位的符号位 ,剩下表示值的只有31个比特位。
4.4 补码
- 计算机是用补码的形式来存放整数的值。
- 正数的补码是该数的二进制形式。
- 负数的补码需要通过以下几步获得。
- 先取得该数的绝对值的二进制形式。
- 再将第1步的值按位取反。
- 最后将第2步的值加1。
正数补码:
7: | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
---|
负数补码:
-7: | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
4.5 二进制表示最大值和最小值
127: | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
1: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-1: | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
-128: | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |