ZHCU876Z July 2001 – October 2023 SM320F28335-EP
表 6-1列出了 C28x 编译器的每种标量数据类型的大小、表示形式和范围。许多范围值在头文件 limits.h 中作为标准宏命令提供。
大小为 16 位的类型在 16 位边界上对齐。大小为 32 位或更大的类型在 32 位(2 个字)边界上对齐。有关 EABI 字段对齐的详细信息,请参阅《C28x 嵌入式应用二进制接口 (EABI)》参考指南(SPRAC71)。节 7.1.7中详细介绍了数据类型的存储和对齐。
范围 | ||||
---|---|---|---|---|
类型 | 大小 | 表示 | 最小值 | 最大值 |
char、signed char | 16 位 | ASCII | -32 768 | 32 767 |
unsigned char | 16 位 | ASCII | 0 | 65 535 |
_Bool | 16 位 | 二进制 | 0 (false) | 1 (true) |
short | 16 位 | 二进制 | -32 768 | 32 767 |
unsigned short | 16 位 | 二进制 | 0 | 65 535 |
int、signed int | 16 位 | 二进制 | -32 768 | 32 767 |
unsigned int | 16 位 | 二进制 | 0 | 65 535 |
long、signed long | 32 位 | 二进制 | -2 147 483 648 | 2 147 483 647 |
unsigned long | 32 位 | 二进制 | 0 | 4 294 967 295 |
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 (2) | 32 位 | IEEE 32 位 | 1.19 209 290e-38(3) | 3.40 282 35e+38 |
double (COFF) | 32 位 | IEEE 32 位 | 1.19 209 290e-38(3) | 3.40 282 35e+38 (COFF) |
double (EABI) | 64 位 | IEEE 64 位 | 2.22 507 385e-308(3) | 1.79 769 313e+308 |
long double | 64 位 | IEEE 64 位 | 2.22 507 385e-308(3) | 1.79 769 313e+308 |
指针 (4) | 32 位 | 二进制 | 0 | 0xFFFFFFFF |
float
,而不是 double
。wchar_t 类型对于 COFF 实现为 int(16 位),对于 EABI 实现为 long(32 位)。
有符号类型的负值用 2 的补码表示。
TMS320C28x 字节是 16 位
根据 ANSI/ISO C 的定义,sizeof 运算符生成存储对象所需的字节数。ANSI/ISO 进一步规定,当 sizeof 应用于 char 时,结果为 1。由于TMS320C28x char 是 16 位(使其可单独寻址),因此一个字节也是 16 位。这可能会产生无法预料的结果;例如,size of (int) = = 1(不是 2)。TMS320C28x 字节和字是等效的(16 位)。若要以 8 位为增量访问数据,请使用节 7.6中所述的 __byte() 和 __mov_byte() 内在函数。