一、C语言中的数据类型
类型 | 数据类型 |
---|---|
基本数据类型 | int, char, float, double |
派生数据类型 | array, pointer, structure, union |
枚举数据类型 | enum |
void数据类型 | void |
二、基本类型
下表罗列出C语言中的基本数据类型
数据类型 | 存储大小 | 范围 |
---|---|---|
char |
1 字节 | -128 到 127 |
signed char |
1 字节 | -128 到 127 |
unsigned char |
1 字节 | 0 到 255 |
short |
2 字节 | -32,768 到 32,767 |
signed short |
2 字节 | -32,768 到 32,767 |
unsigned short |
2 字节 | 0 到 65,535 |
int |
2 或 4 字节 | -32,768 到 32,767(2 字节时) -2,147,483,648 到 2,147,483,647(4 字节时) |
signed int |
2 或 4 字节 | 同 int |
unsigned int |
2 或 4 字节 | 0 到 65,535(2 字节时) 0 到 4,294,967,295(4 字节时) |
short int |
2 字节 | 同 short |
signed short int |
2 字节 | 同 short |
unsigned short int |
2 字节 | 同 unsigned short |
long int |
4 字节 | -2,147,483,648 到 2,147,483,647 |
signed long int |
4 字节 | 同 long int |
unsigned long int |
4 字节 | 0 到 4,294,967,295 |
float |
4 字节 | 约 ±1.2e-38 到 ±3.4e38(6-7 位有效数字) |
double |
8 字节 | 约 ±2.3e-308 到 ±1.7e308(15-16 位有效数字) |
long double |
10 字节 | 约 ±3.4e-4932 到 ±1.1e4932(18-19 位有效数字) |
int(整型)
整数可以具有零,正和负值。例如,0,-5,10
我们可以int用来声明一个整数变量。
int id;
在这里,id是整数类型的变量。
我们还可以在C语言编程中一次声明多个变量。例如,
int id, age;
浮点类型:float(单精度浮点数) 和 double(双精度浮点数)
float与double用于保存实数,也就是含有小数点的数字。
float salary;
double price;
在C语言中,浮点数也可以用指数表示。例如,
float normalizationFactor = 22.442e2;
float和double之间有什么区别?
float(单精度浮点数据类型)的大小为4个字节。double(双精度浮点数据类型)的大小为8个字节。
char
关键字char用于声明字符类型变量。例如,
char test = 'h';
void
void是空类型,一般用于函数的返回类型表示,表示该函数啥都不返回。
例如,如果函数不返回任何内容,则其返回类型应为void。
请注意,您不能创建void类型的变量。
void 类型指定没有可用的值。它通常用于以下三种情况下:
类型与描述 |
---|
函数返回为空 C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status); |
函数参数为空 C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void); |
指针指向 void 类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。 |
short 和 long
如果需要使用较大的数字,则可以使用long类型说明符。方法如下:
long a;
long long b;
long double c;
这里变量a和b可以存储整数值。并且,c可以存储浮点数。
如果您确定只使用一个小整数(范围为[−32,767, +32,767]),则可以使用short。
short d;
您可以使用sizeof()
运算符检查变量的大小。示例如下:
#include <stdio.h>
int main() {
short a;
long b;
long long c;
long double d;
printf("short 字节大小 = %d 字节\n", sizeof(a));
printf("long 字节大小= %d 字节\n", sizeof(b));
printf("long long 字节大小= %d 字节\n", sizeof(c));
printf("long double 字节大小= %d 字节\n", sizeof(d));
return 0;
}
输出结果:
short 字节大小 = 2 字节
long 字节大小= 4 字节
long long 字节大小= 8 字节
long double 字节大小= 8 字节
signed 和 unsigned
在C中,signed和unsigned是类型修饰符。您可以使用它们来更改数据类型的数据存储。例如,
unsigned int x;
int y;
在这里,x由于我们使用了unsigned修饰符,因此该变量只能存储零和正值。
考虑到int的大小为4个字节,变量y可以保存从-231 到 231-1的值,而变量x可以保存从0 到 232-1的值。
派生数据类型
从基本数据类型派生的数据类型是派生类型。例如:数组,指针,函数类型,结构等。
此部分会放在后续内容中进行说明