跳到主要内容

C 数据类型

1.基本概念

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

序号类型与描述
1基本类型: 它们是算术类型,包括:整数类型、浮点类型、字符类型、布尔类型、枚举类型。
2枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
3void 类型: 类型说明符 void 表明没有可用的值。
4派生类型: 它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。

2.基本数据类型取值范围

2.基本数据类型取值范围

  • 整数类型
类型存储大小值范围
char1 字节-128 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-128 到 127
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long4 字节-2,147,483,648 到 2,147,483,647
unsigned long4 字节0 到 4,294,967,295
  • 浮点类型
类型存储大小值范围
float4 字节1.2E-38 到 3.4E+38
double8 字节2.3E-308 到 1.7E+308
long double16 字节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 二进制、八进制、十进制、十六进制

十进制二进制八进制十六进制
100000000X00
200010010X01
300100020X02
400110030X03
501000040X04
601010050X05
701100060X06
801110070X07
910000100X08
1010010110X09
1110100120X0A
1210110130X0B
1311000140X0C
1411010150X0D
1511100160X0E
1611110170X0F

4.3 符号位

  • 存放singned类型的存储单元中,左边第一位表示符号位。
  • 符号位为0,该数为正数,符号位为1,该数为负数。
  • 一个32位的整形变量,除去左边第一位的符号位,剩下表示值的只有31个比特位。

4.4 补码

  • 计算机是用补码的形式来存放整数的值。
  • 正数的补码是该数的二进制形式。
  • 负数的补码需要通过以下几步获得。
    • 先取得该数的绝对值的二进制形式。
    • 再将第1步的值按位取反。
    • 最后将第2步的值加1。

正数补码:

7:00000111

负数补码:

-7:10000111
11111000
11111001

4.5 二进制表示最大值和最小值

127:01111111
1:00000001
0:00000000
-1:11111111
-128:10000000