数据类型
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
C99标准提供的7种基本数据类型及其对应的关键字如表所示。
关键字 | 数据类型 | 关键字 | 数据类型 |
---|---|---|---|
字符型char | 无值类型 | void | |
整型 | int | 逻辑型 | _bool |
浮点(单精度)型 | float | 复数型 | _complex_imaginary |
双精度型 | double |
-
字符型:描述单个字符;
-
整型:描述整数,整数在计算机上是准确表示的;
-
浮点型、双精度型:描述实数,实数在计算机上一般是近似表示的,浮点型的近似程度比较低,而双精度型的近似程度比较高。
-
无值类型:没有具体的值,通常用来描述无形式参数或无返回值的C函数,以及无定向指针。
-
逻辑型:描述逻辑真(其值为1)与逻辑假(其值为0)。
-
复数型:描述复数(_complex)和纯虚数(_imaginary)。
使用逻辑型时必须包含头文件stdbool.h,使用复数型时必须包含头文件complex.h。
在不同的系统上,这些类型占据的字节长度是不同的:
在32 位的系统上
short 占据的内存大小是2 个byte;
int占据的内存大小是4 个byte;
long占据的内存大小是4 个byte;
float占据的内存大小是4 个byte;
double占据的内存大小是8 个byte;
char占据的内存大小是1 个byte。
具体可以用sizeof测试一下即可。
测试数据类型大小: printf("%d\n",sizeof(类型名));
char c = 255;
printf("%d\n",c) 输出有符号整数为-1 输出无符号整数为255
整数类型
类型 | 存储大小 | 值范围 |
---|---|---|
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 |
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存储大小 : %lu \n", sizeof(int));
printf("short int 存储大小 : %lu \n", sizeof(short int));
printf("long int 存储大小 : %lu \n", sizeof(long int));
printf("long long int 存储大小 : %lu \n", sizeof(long long int));
printf("float 存储大小 : %lu \n", sizeof(float));
printf("double 存储大小 : %lu \n", sizeof(double));
return 0;
}
浮点类型
类型 | 存储大小 | 值范围 | 精度 |
---|---|---|---|
float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位小数 |
double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位小数 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位小数 |
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}