C 扩展类型
更多数据类型
除了基本类型(int、float、double、char)之外,C 语言还提供了扩展关键字(short、long、unsigned)来控制数字的大小,以及它是否为负数:
| 类型 | 大小* | 范围(通常) | 格式说明符 |
|---|---|---|---|
short int |
2 字节 | -32,768 至 32,767 | %hd |
unsigned int |
2 或 4 字节 | 0 到 65,535(2 字节) 0 到 4,294,967,295(4 字节) |
%u |
long int |
4 或 8 字节 | -2,147,483,648 至 2,147,483,647(4 字节) -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807(8 字节) |
%ld |
long long int |
8 字节 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | %lld |
unsigned long int |
4 或 8 字节 | 0 到 4,294,967,295(4 字节) 0 到 18,446,744,073,709,551,615(8 字节) |
%lu |
unsigned long long int |
8 字节 | 0 到 18,446,744,073,709,551,615 | %llu |
long double |
8、12 或 16 字节 | 具体实现取决于具体情况,但比 double | 更精确。
%Lf |
unsigned 表示该类型只能存储非负值(0 及以上)。
注意: 这些类型的大小在不同系统之间可能有所不同(例如,2 字节或 4 字节,或 4 字节或 8 字节),具体取决于计算机的型号(旧或新)、32 位或 64 位以及所使用的编译器。
以下示例展示了如何创建和打印这些扩展类型:
示例
int normalInt = 1000; // standard int
double normalDouble = 3.14; // standard double
short int small = -100; // smaller int
unsigned int count = 25; // only positive int
long int big = 1234567890; // larger int
long long int veryBig = 9223372036854775807; // very large int
unsigned long long int huge = 18446744073709551615U; // very large, only positive
long double precise = 3.141592653589793238L; // extended precision
printf("Normal int: %d
", normalInt);
printf("Normal double: %lf
", normalDouble);
printf("Small: %hd
", small);
printf("Count: %u
", count);
printf("Big: %ld
", big);
printf("Very Big: %lld
", veryBig);
printf("Huge: %llu
", huge);
printf("Precise: %Lf
", precise);
注意:这些扩展类型主要用于需要对内存使用或数值范围进行非常精确控制的情况。
注意:对于日常编程,int、float、double 和 char 通常就足够了。
检查大小
*具体大小取决于您的系统和编译器。 请记住,您可以使用 sizeof 运算符来检查大小:
示例
printf("Size of int: %zu bytes
", sizeof(int));
printf("Size of double: %zu bytes
", sizeof(double));
printf("Size of short int: %zu bytes
", sizeof(short int));
printf("Size of unsigned int: %zu bytes
", sizeof(unsigned int));
printf("Size of long int: %zu bytes
", sizeof(long int));
printf("Size of long long int: %zu bytes
", sizeof(long long int));
printf("Size of unsigned long long int: %zu bytes
", sizeof(unsigned long long int));
printf("Size of long double: %zu bytes
", sizeof(long double));
提示: 当您需要精确控制数字的大小时,可以使用固定宽度类型,我们稍后会学习到。
本页旨在向您展示 C 语言还有其他扩展类型,但目前在本教程中,我们将继续专注于基本类型(int、float、double、char)。

