ZHCUAU3J January 2018 – March 2024
表 5-1列出了 C7000 编译器的每种标量数据类型的大小、表示形式和范围。许多范围值在头文件 limits.h 中作为标准宏命令提供。
节 6.2.1中介绍了数据类型的存储和对齐。
范围 | ||||
---|---|---|---|---|
类型 | 大小 | 表示 | 最小值 | 最大值 |
char、signed char | 8 位 | ASCII | -128 | 127 |
unsigned char | 8 位 | ASCII | 0 | 255 |
_Bool、bool | 8 位 | ASCII | 0 (false) | 1 (true) |
short | 16 位 | 二进制 | -32 768 | 32 767 |
unsigned short | 16 位 | 二进制 | 0 | 65 535 |
int、signed int | 32 位 | 二进制 | -2 147 483 648 | 2 147 483 647 |
unsigned int、wchar_t | 32 位 | 二进制 | 0 | 4 294 967 295 |
long、signed long | 64 位 | 二进制 | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 808 |
unsigned long | 64 位 | 二进制 | 0 | 18 446 744 073 709 551 615 |
long long、signed long long | 64 位 | 二进制 | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
unsigned long long | 64 位 | 二进制 | 0 | 18 446 744 073 709 551 615 |
enum (1) | 不尽相同 | 二进制 | 不尽相同 | 不尽相同 |
float | 32 位 | IEEE 32 位 | 1.175 494e-38(2) | 3.40 282 346e+38 |
float complex | 64 位 | 2 个 IEEE 32 位数组 | 1.175 494e-38 分别适用于实部和虚部 | 3.40 282 346e+38 分别适用于实部和虚部 |
double | 64 位 | IEEE 64 位 | 2.22 507 385e-308(2) | 1.79 769 313e+308 |
double complex | 128 位 | 2 个 IEEE 64 位数组 | 2.22 507 385e-308 分别适用于实部和虚部 | 1.79 769 313e+308 分别适用于实部和虚部 |
long double | 64 位 | IEEE 64 位 | 2.22 507 385e-308(2) | 1.79 769 313e+308 |
long double complex | 128 位 | 2 个 IEEE 64 位数组 | 2.22 507 385e-308 分别适用于实部和虚部 | 1.79 769 313e+308 分别适用于实部和虚部 |
指针、引用、指向数据成员的指针 | 64 位 | 二进制 | 0 | 0xFFFFFFFFFFFFFFFF |
有符号类型的负值用 2 的补码表示。
当不同设备和编译器之间实现可移植性需要特定的数据类型大小时,建议代码使用 C 标准整数类型 int64_t
和 int32_t
(等)。这些标准整数类型是在 stdint.h
中定义的,其作为 C 标准库支持的一部分被包含在运行时支持库中。
C7000 采用 LP64 代表性惯例。也就是说,类型 int
是 32 位,而 long
和 pointer
类型是 64 位。
C、C99 和 C++ 的这些附加类型被定义为标准类型的同义词:
类型 | 定义 |
---|---|
size_t | unsigned long |
ptrdiff_t | long |
wchar_t | unsigned int |
wint_t | int |
va_list | char * |