ZHCU820Y September 2004 – June 2021
表 6-1列出了 MSP430 编译器的每种标量数据类型的大小、表示形式和范围。许多范围值在头文件 limits.h 中作为标准宏命令提供。
Topic Link Label7.2中介绍了数据类型的存储和对齐。
范围 | |||||
---|---|---|---|---|---|
类型 | 大小 | 对齐 | 表示 | 最小值 | 最大值 |
signed char | 8 位 | 8 | 二进制 | -128 | 127 |
char | 8 位 | 8 | ASCII | 0 或 -128 (1) | 255 或 127 (1) |
unsigned char | 8 位 | 8 | 二进制 | 0 | 255 |
bool (C99) | 8 位 | 8 | 二进制 | 0 (false) | 1 (true) |
_Bool (C99) | 8 位 | 8 | 二进制 | 0 (false) | 1 (true) |
bool (C++) | 8 位 | 8 | 二进制 | 0 (false) | 1 (true) |
short、signed short | 16 位 | 16 | 二进制 | -32 768 | 32 767 |
unsigned short | 16 位 | 16 | 二进制 | 0 | 65 535 |
int、signed int | 16 位 | 16 | 二进制 | -32 768 | 32 767 |
unsigned int | 16 位 | 16 | 二进制 | 0 | 65 535 |
long、signed long | 32 位 | 16 | 二进制 | -2 147 483 648 | 2 147 483 647 |
unsigned long | 32 位 | 16 | 二进制 | 0 | 4 294 967 295 |
long long、signed long long | 64 位 | 16 | 二进制 | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
unsigned long long | 64 位 | 16 | 二进制 | 0 | 18 446 744 073 709 551 615 |
enum | 不尽相同 (2) | 16 | 二进制 | 不尽相同 | 不尽相同 |
float | 32 位 | 16 | IEEE 32 位 | 1.175 494e-38(3) | 3.40 282 346e+38 |
double | 64 位 | 16 | IEEE 64 位 | 2.22 507 385e-308(3) | 1.79 769 313e+308 |
long double | 64 位 | 16 | IEEE 64 位 | 2.22 507 385e-308(3) | 1.79 769 313e+308 |
函数和数据指针 | 不尽相同(请参阅表 6-2) | 16 |
默认情况下,char 类型是无符号型。这与“signed char”和“unsigned char”类型不同,后者指定了它们的符号行为。您可以使用 --plain_char=signed
编译器选项更改“char”类型的默认设置。
有符号类型的负值用 2 的补码表示。
C、C99 和 C++ 中的其他类型被定义为标准类型的同义词:
typedef unsigned int wchar_t;
typedef unsigned int wint_t;
MSP 设备 支持多种数据和代码存储器模式。代码和数据模式会影响大小、 对齐,以及用于函数指针、数据指针、size_t 类型、 和 ptrdiff_t 类型的存储空间。始终在大小为 2 位幂的容器中 存储大小不是 2 的幂的指针。也就是说,20 位类型存储在 32 位中。
代码或数据模式 | 类型 | 大小 | 存储 | 对齐 |
---|---|---|---|---|
小型代码模式 | 函数指针 | 16 | 16 | 16 |
大型代码模式 | 函数指针 | 20 | 32 | 16 |
小型数据模式 | 数据指针 | 16 | 16 | 16 |
小型数据模式 | size_t | 16 | 16 | 16 |
小型数据模式 | ptrdiff_t | 16 | 16 | 16 |
受限数据模式 | 数据指针 | 20 | 32 | 16 |
受限数据模式 | size_t | 16 | 16 | 16 |
受限数据模式 | ptrdiff_t | 16 | 16 | 16 |
大型数据模式 (1) | 数据指针 | 20 | 32 | 16 |
大型数据模式 | size_t | 32 | 32 | 16 |
大型数据模式 | ptrdiff_t | 32 | 32 | 16 |