在不同的机器上使用不同的C++编译器,不同数据类型的大小存在差异,经过测试得到如下数据:
Type | AIX32 | AIX64 | SUN32 | SUN64 | WIN32 | WIN64 |
---|---|---|---|---|---|---|
char | 1 | 1 | 1 | 1 | 1 | 1 |
short | 2 | 2 | 2 | 2 | 2 | 2 |
int | 4 | 4 | 4 | 4 | 4 | 4 |
long | 4 | 8 | 4 | 8 | 4 | 4 |
float | 4 | 4 | 4 | 4 | 4 | 4 |
wchar_t | 2 | 4 | 4 | 4 | 2 | 2 |
double | 8 | 8 | 8 | 8 | 8 | 8 |
long long | 8 | 8 | 8 | 8 | 8 | 8 |
long double | 8 | 8 | 16 | 16 | 8 | 8 |
可见,常见的数据类型 char , short , int , float , double 在不同编译器上是一致的;
综合来看,SUN的编译器实际支持的数据类型更多,差异化最少,例如无论 32 还是 64 位,都是采用的 UTF-32;
编译器:AIX 采用 xlr_C,Sun 采用 CC ,Windows 采用 cl.exe