基本数据类型
数据类型 |
关键字 |
描述 |
字符型 |
char |
描述单个字符。 |
整型 |
short/int/long |
描述整数,整数在计算机上是准确表示的。 |
浮点(单精度)型 |
float |
描述实数,实数在计算机上一般是近似表示的,浮点型的近似程度比较低,而双精度型的近似程度比较高。 |
双精度型 |
double |
描述实数,实数在计算机上一般是近似表示的,浮点型的近似程度比较低,而双精度型的近似程度比较高。 |
数据类型 |
关键字 |
描述 |
无值类型 |
void |
没有具体的值,通常用来描述无形式参数或无返回值的C函数,以及无定向指针。 |
逻辑型 |
_bool |
描述逻辑真(其值为1)与逻辑假(其值为0)。 |
复数型 |
_complex_imaginary |
描述复数(_complex)和纯虚数(_imaginary)。 |
备注:使用逻辑型时必须包含头文件stdbool.h,使用复数型时必须包含头文件complex.h。
构造数据类型 |
关键字 |
描述 |
数组 |
type arrayName [ arraySize ] |
arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; |
结构体 |
struct tag { member-list member-list member-list ... } variable-list ; |
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。。 |
共用体 |
union Data{ int i; float f; char str[20]; } data; |
Data 类型的变量可以存储一个整数、一个浮点数,或者一个字符串。这意味着一个变量(相同的内存位置)可以存储多个多种类型的数据。您可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。共用体占用的内存应足够存储共用体中最大的成员。例如,在上面的实例中,Data 将占用 20 个字节的内存空间,因为在各个成员中,字符串所占用的空间是最大的。 |
枚举类型 |
enum 枚举名 {枚举元素1,枚举元素2,……}; |
enum season {spring, summer=3, autumn, winter}; 没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5; |
详细讲解可参考地址:https://www.runoob.com/cprogramming/c-fun-pointer-callback.html
定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。
基本数据类型取值范围
类型 |
长度/子节 |
取值范围 |
存储方式 |
char |
1 |
-128~127 |
有符号二进制补码形式 |
[signed]char |
1 |
-128~127 |
|
unsigned char |
1 |
0~255 |
|
short[int] |
2 |
-32768~32768 |
|
unsigned short[int] |
2 |
0~65535 |
|
int |
4 |
-2147483648~2147483647 |
定点有符号二进制补码形式 |
[signed]int |
4 |
-2147483648~2147483647 |
|
unsigned int |
1 |
0~4294967295 |
|
long[int] |
2 |
-2147483648~2147483647 |
|
unsigned long[int] |
4 |
-2147483648~2147483647 |
|
unsigned long [int] |
4 |
0~4294967295 |
|
float |
4 |
-3.410^38~3.410^38 |
浮点形式存储 |
double |
8 |
-1.79810^308~1.79810^308 |
浮点形式存储 |
long double |
8 |
-1.79810^308~1.79810^308 |
浮点形式存储 |
备注:
short int<=int<=long int<=long long int
float<=double<=long double