C 语言中的整型数据类型丰富多样,每种类型的取值范围因编译器、操作系统和硬件架构(如 32 位和 64 位)而有所不同。本篇文章将详细介绍 C 语言各个整型的取值范围 和 整型常量的后缀,并辅以表格与示例,助你轻松掌握!
C 语言的整型数据类型主要包括:
char
(字符型,也属于整型)short
(短整型)int
(整型)long
(长整型)long long
(更长的整型)unsigned
(无符号整型)由于 char
也可以存储整数,所以我们也会提及它的取值范围。
说明:
类型 | 关键字 | 典型位数(bits) | 取值范围(十进制) |
---|---|---|---|
char |
char |
8 | -128 ~ 127(signed ) / 0 ~ 255(unsigned ) |
short int |
short / short int |
16 | -32,768 ~ 32,767 / 0 ~ 65,535 |
int |
int |
32 | -2,147,483,648 ~ 2,147,483,647 / 0 ~ 4,294,967,295 |
long int |
long / long int |
32 或 64 | -2,147,483,648 ~ 2,147,483,647(32位)/ -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807(64位) |
long long int |
long long / long long int |
64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned char |
unsigned char |
8 | 0 ~ 255 |
unsigned short |
unsigned short |
16 | 0 ~ 65,535 |
unsigned int |
unsigned int |
32 | 0 ~ 4,294,967,295 |
unsigned long |
unsigned long |
32 或 64 | 0 ~ 4,294,967,295(32位)/ 0 ~ 18,446,744,073,709,551,615(64位) |
unsigned long long |
unsigned long long |
64 | 0 ~ 18,446,744,073,709,551,615 |
注意:
int
默认是signed
,即signed int
与int
是等价的。long
在某些 64 位系统上(如 Linux)是 64 位,但在 Windows 上仍然是 32 位。long long
在所有主流系统上都是 64 位。
在 C 语言中,整数常量(Integer Constant)可以使用 后缀 来指定其类型。合理使用后缀可以确保编译器正确解析数值类型,避免 溢出 和 意外的类型转换。
后缀 | 代表的类型 | 示例 |
---|---|---|
U |
unsigned |
100U (无符号) |
L |
long |
100L (长整型) |
LL |
long long |
100LL (超长整型) |
UL |
unsigned long |
100UL (无符号长整型) |
ULL |
unsigned long long |
100ULL (无符号超长整型) |
#include
int main() {
int a = 100; // 普通 int
unsigned int b = 100U; // 无符号 int
long c = 100L; // long int
long long d = 100LL; // long long int
unsigned long e = 100UL; // unsigned long
unsigned long long f = 100ULL; // unsigned long long
printf("a = %d\n", a);
printf("b = %u\n", b);
printf("c = %ld\n", c);
printf("d = %lld\n", d);
printf("e = %lu\n", e);
printf("f = %llu\n", f);
return 0;
}
U
和 L
大小写均可,如 100u
/ 100l
也有效,但建议用大写以防止混淆(小写 l
容易看成 1
)。U
(unsigned)L
(long)LL
(long long)int
类型,如果数值超过 int
的范围,C 编译器会自动推断为更大的类型。在 C 语言中,整数可以使用不同进制表示:
进制 | 语法 | 示例 | 说明 |
---|---|---|---|
十进制 | 直接写 |
123 |
正常数字 |
八进制 | 0 开头 |
0123 |
以 0 开头的数字,代表八进制,0123 即十进制 83 |
十六进制 | 0x 开头 |
0x123 |
以 0x 开头,代表十六进制 |
二进制(C99 起) | 0b 开头 |
0b1010 |
以 0b 开头,代表二进制(部分编译器不支持) |
示例:
int a = 10; // 十进制
int b = 012; // 八进制 (等于十进制 10)
int c = 0xA; // 十六进制 (等于十进制 10)
int d = 0b1010; // 二进制 (等于十进制 10, 仅部分编译器支持)
char
, short
, int
, long
, long long
,以及对应的 unsigned
版本,取值范围受系统影响。U
、L
、LL
等后缀可以显式声明整数常量的类型,避免溢出问题。0
、0x
、0b
)。希望这篇文章能帮助你更好地理解 C 语言的整型数据!