📜  扩展的整数类型(在C C++中选择正确的整数大小)(1)

📅  最后修改于: 2023-12-03 15:10:03.705000             🧑  作者: Mango

扩展的整数类型(在C/C++中选择正确的整数大小)

在C/C++中,整数类型有不同的大小和符号性质。但在某些情况下,需要使用更大或更小的整数类型,因此引入了扩展的整数类型。以下是在C/C++中使用扩展的整数类型的一些注意点。

无符号整数类型

在需要存储非负整数的情况下,应该选择无符号整数类型。在C/C++中,无符号整数类型可表示0和正整数。

无符号整数类型的取值范围由所占位数而定,C/C++支持多种无符号整数类型。

| 类型 | 所占位数 | 取值范围 | | -------- | -------- | ------------------------------------------------------ | | unsigned char | 8 bits | 0 to 255 | | unsigned short | 16 bits | 0 to 65535 | | unsigned int | 32 bits | 0 to 4294967295 | | unsigned long | 32 bits | 0 to 4294967295(32 位编译器)或 0 to 18446744073709551615(64 位编译器) | | unsigned long long | 64 bits | 0 to 18446744073709551615 |

当需要存储大于上述最大值的正整数时,可以使用C/C++的扩展整数类型。

扩展整数类型

C/C++引入了扩展整数类型,可以存储位数更多的整数类型。扩展整数类型以__intn的形式命名,其中n表示所占的位数。

以下是C/C++支持的扩展整数类型。

| 类型 | 所占位数 | 取值范围 | | ------------ | -------- | ---------------------------------------------------------------------------------- | | __int128 | 128 bits | -2^127 to 2^127-1 | | __uint128_t | 128 bits | 0 to 2^128-1 | | __int64 | 64 bits | -2^63 to 2^63-1 | | __uint64_t | 64 bits | 0 to 2^64-1 | | __int32 | 32 bits | -2^31 to 2^31-1 | | __uint32_t | 32 bits | 0 to 2^32-1 | | __int16 | 16 bits | -2^15 to 2^15-1 | | __uint16_t | 16 bits | 0 to 2^16-1 | | __int8 | 8 bits | -2^7 to 2^7-1 | | __uint8_t | 8 bits | 0 to 2^8-1 |

需要注意的是,这些扩展整数类型只在某些环境下被支持,并不是所有C/C++编译器都支持它们。

选择正确的整数大小

在选择整数类型时,应该根据所需存储的数值范围来选择恰当的整数类型。如果需要存储的正整数超过了无符号整数类型的最大值,应使用扩展整数类型。

例如,如果需要存储一个长整数,可以使用long long类型,如果需要存储更大的数,则考虑使用C/C++的扩展整数类型。

总结

C/C++中支持多种整数类型,包括无符号整数类型和扩展的整数类型。选择正确的整数类型非常重要,可以避免跨平台使用时的问题,还可以节省内存。在存储需要更大的整数时,可以使用C/C++的扩展整数类型。