ZHCADC4A September 2011 – March 2014
整数值使用二进制补码表示法。浮点值使用 IEEE 754.1 表示法表示。浮点运算在硬件支持的程度上遵循 IEEE 754.1。
表 2-1 提供 C 数据类型的大小和对齐方式(以位为单位)。
类型 | 通用名称 | 大小 | 对齐 |
---|---|---|---|
signed char | char | 8 | 8 |
unsigned char | uchar | 8 | 8 |
char | 普通字符 | 8 | 8 |
bool (C99) | uchar | 8 | 8 |
_Bool (C99) | uchar | 8 | 8 |
bool (C++) | uchar | 8 | 8 |
short、signed short | int16 | 16 | 16 |
unsigned short | uint16 | 16 | 16 |
int、signed int | int32 | 32 | 32 |
unsigned int | uint32 | 32 | 32 |
long (32 位),signed long | int32 | 32 | 32 |
unsigned long | uint32 | 32 | 32 |
long(40 位) | int40 | 40 | 64 |
long long、signed long long | int64 | 64 | 64 |
unsigned long long | uint64 | 64 | 64 |
enum | -- | 不尽相同(请参阅节 2.8) | 32 |
float | float32 | 32 | 32 |
double | float64 | 64 | 64 |
long double | float64 | 64 | 64 |
指针 | -- | 32 | 32 |
此规范中使用的表中的通用名称以与语言无关的方式标识类型。
列出的对齐方式值是默认值。它们适用于所有情况,但在“紧凑”结构中使用类型时除外。“紧凑”结构内的所有结构成员类型都具有 8 位对齐方式。
char 类型带符号。
整数类型具有互补无符号变体。通用名称以“u”为前缀(例如 uint32)。
bool 类型使用值 0 表示 false,1 表示 true。其他值未定义。
在以前用于 C6000的 COFF ABI 中,C 类型 long 是 40 位整数,对应于原始 62x 硬件的最长原生整数类型。默认情况下,EABI 将 long 更改为 32 位,以与通用不成文约定兼容。但是,工具链可能希望通过支持可选的 40 位类型(指定为 long 或其他类型)来支持与 COFF ABI 下开发的旧代码的兼容性,因此本文将介绍表示法。请注意,该类型的大小为 40 位,但对齐方式为 64 位。如果将 40 位 long 类型用于“紧凑”结构的成员,则该类型具有 8 位对齐方式,但容器大小为 64 位。
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;