在 C 编程中,数据类型是变量的声明。这决定了与变量相关的数据的类型和大小。例如,
int myVar;
在此,myVar 是一个 int
(整数)类型的变量。int
的大小为 4 字节。
基本类型
下表包含 C 编程中常用的类型,方便快速查阅。
类型 | 大小(字节) | 格式说明符 |
---|---|---|
int |
至少 2,通常为 4 | %d , %i |
char |
1 | %c |
浮点数 |
4 | %f |
双精度浮点数 |
8 | %lf |
short int |
通常为 2 | %hd |
无符号整型 |
至少 2,通常为 4 | %u |
long int |
至少 4,通常为 8 | %ld , %li |
long long int |
至少 8 | %lld , %lli |
unsigned long int |
至少 4 | %lu |
unsigned long long int |
至少 8 | %llu |
有符号字符 |
1 | %c |
无符号字符 |
1 | %c |
long double |
至少 10,通常为 12 或 16 | %Lf |
int
整数是可以具有零、正数和负数但没有小数位的整数。例如,0
、-5
、10
我们可以使用 int
来声明一个整数变量。
int id;
在此,id 是一个整数类型的变量。
您可以在 C 编程中一次声明多个变量。例如,
int id, age;
int
的大小通常为 4 字节(32 位)。并且,它可以从 -2147483648
到 2147483647
接受 232
个不同的值。
float 和 double
float
和 double
用于存储实数。
float salary;
double price;
在 C 语言中,浮点数也可以用指数形式表示。例如,
float normalizationFactor = 22.442e2;
float
和 double
之间有什么区别?
float
(单精度浮点数据类型)的大小为 4 字节。double
(双精度浮点数据类型)的大小为 8 字节。
char
关键字 char
用于声明字符类型变量。例如,
char test = 'h';
字符变量的大小为 1 字节。
void
void
是一种不完整类型。它表示“无”或“无类型”。您可以将 void 视为缺失。
例如,如果一个函数不返回任何内容,其返回类型应为 void
。
请注意,您不能创建 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("size of short = %d bytes\n", sizeof(a));
printf("size of long = %d bytes\n", sizeof(b));
printf("size of long long = %d bytes\n", sizeof(c));
printf("size of long double= %d bytes\n", sizeof(d));
return 0;
}
signed 和 unsigned
在 C 语言中,signed
和 unsigned
是类型修饰符。您可以使用它们来更改数据类型的存储方式。
signed
- 允许存储正数和负数unsigned
- 只允许存储正数
例如,
// valid codes
unsigned int x = 35;
int y = -35; // signed int
int z = 36; // signed int
// invalid code: unsigned int cannot hold negative integers
unsigned int num = -35;
在此,变量 x 和 num 只能存储零和正值,因为我们使用了 unsigned
修饰符。
考虑到 int
的大小为 4 字节,变量 y 的取值范围为 -231
到 231-1
,而变量 x 的取值范围为 0
到 232-1
。
派生数据类型
从基本数据类型派生的数据类型称为派生类型。例如:数组、指针、函数类型、结构体等。
我们将在后面的教程中学习这些派生数据类型。
- bool 类型
- 枚举类型
- 复杂类型