ZHCUAQ1G June 2015 – August 2025
表 7-1列出了 C6000 编译器的每种标量数据类型的大小、表示形式和范围。许多范围值在头文件 limits.h 中作为标准宏命令提供。
节 8.2.1中介绍了数据类型的存储和对齐。
| 范围 | ||||
|---|---|---|---|---|
| 类型 | 尺寸 | 表示 | 最小值 | 最大值 |
| char、signed char | 8 位 | ASCII | -128 | 127 |
| unsigned char | 8 位 | ASCII | 0 | 255 |
| cchar(1) | 16 位 | ASCII | -128 分别适用于实部和虚部 | 127 分别适用于实部和虚部 |
| _Bool、bool | 8 位 | ASCII | 0 (false) | 1 (true) |
| short | 16 位 | 二进制 | -32 768 | 32 767 |
| unsigned short、wchar_t (2) | 16 位 | 二进制 | 0 | 65 535 |
| cshort(1) | 32 位 | 二进制 | -32 768 分别适用于实部和虚部 | 32 767 分别适用于实部和虚部 |
| int、signed int | 32 位 | 二进制 | -2 147 483 648 | 2 147 483 647 |
| unsigned int | 32 位 | 二进制 | 0 | 4 294 967 295 |
| cint(1) | 64 位 | 二进制 | -2 147 483 648 分别适用于实部和虚部 | 2 147 483 647 分别适用于实部和虚部 |
| long、signed long | 32 位 | 二进制 | -2 147 483 648 | 2 147 483 648 |
| unsigned long | 32 位 | 二进制 | 0 | 4 294 967 295 |
| __int40_t | 40 位 | 二进制 | -549 755 813 888 | 549 755 813 887 |
| unsigned __int40_t | 40 位 | 二进制 | 0 | 1 099 511 627 775 |
| 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 |
| clonglong(1) | 128 位 | 二进制 | -9 223 372 036 854 775 808 分别适用于实部和虚部 | 9 223 372 036 854 775 807 分别适用于实部和虚部 |
| enum (3) | 不尽相同 | 二进制 | 不尽相同 | 不尽相同 |
| float | 32 位 | IEEE 32 位 | 1.175 494e-38(4) | 3.40 282 346e+38 |
| cfloat、float complex (1) | 64 位 | 2 个 IEEE 32 位数组 | 1.175 494e-38 分别适用于实部和虚部 | 3.40 282 346e+38 分别适用于实部和虚部 |
| double | 64 位 | IEEE 64 位 | 2.22 507 385e-308(4) | 1.79 769 313e+308 |
| cdouble、double complex (1) | 128 位 | 2 个 IEEE 64 位数组 | 2.22 507 385e-308 分别适用于实部和虚部 | 1.79 769 313e+308 分别适用于实部和虚部 |
| long double | 64 位 | IEEE 64 位 | 2.22 507 385e-308(4) | 1.79 769 313e+308 |
| long double complex (1) | 128 位 | 2 个 IEEE 64 位数组 | 2.22 507 385e-308 分别适用于实部和虚部 | 1.79 769 313e+308 分别适用于实部和虚部 |
| 指针、引用、数据成员指针 | 32 位 | 二进制 | 0 | 0xFFFFFFFF |
有符号类型的负值用 2 的补码表示。
C、C99 和 C++ 的这些附加类型被定义为标准类型的同义词:
typedef unsigned int size_t;
typedef int ptrdiff_t;
typedef unsigned int wchar_t;
typedef unsigned int wint_t;
typedef char * va_list;