有时候,总想验证一些奇怪的想法,干脆就写下来,以备后查。
想法:cygwin中c++常用基本类型的字节大小
// 函数功能: 测试c++基本类型
// 备 注: 占用空间大小等
void TestCase_BaseTypeSize()
{
#ifndef __x86_64
printf("running with x86. \n");
#else
printf("running with x64. \n");
#endif
printf("---------------- c basic type size ---------------- \n");
printf("sizeof(bool) = %d \n", sizeof(bool)); // 1
printf("sizeof(int) = %d \n", sizeof(int)); // 4
printf("sizeof(char) = %d \n", sizeof(char)); // 1
printf("sizeof(short) = %d \n", sizeof(short)); // 2
printf("sizeof(long) = %d \n", sizeof(long)); // 4(x86) 8(x64)
printf("sizeof(float) = %d \n", sizeof(float)); // 4
printf("sizeof(double) = %d \n", sizeof(double)); // 8
printf("sizeof(wchar_t) = %d \n", sizeof(wchar_t)); // 2
printf("sizeof(int*) = %d \n", sizeof(int*)); // 4(x86) 8(x64)
printf("sizeof(char*) = %d \n", sizeof(char*)); // 4(x86) 8(x64)
printf("---------------- extended type size ---------------- \n");
char *pChar = NULL;
printf("pChar+1 = %d \n", pChar+1); // 1
int *pInt = NULL;
printf("pInt+1 = %d \n", pInt+1); // 4
double *pDouble = NULL;
printf("pDouble+1 = %d \n", pDouble+1); // 8
printf("---------------- extended type size ---------------- \n");
printf("sizeof(time_t) = %d \n", sizeof(time_t)); // 4(x86) 8(x64)
}
编译:g++ main.cpp -o x64.exe
执行结果:
running with x64.
---------------- c basic type size ----------------
sizeof(bool) = 1
sizeof(int) = 4
sizeof(char) = 1
sizeof(short) = 2
sizeof(long) = 8
sizeof(float) = 4
sizeof(double) = 8
sizeof(wchar_t) = 2
sizeof(int*) = 8
sizeof(char*) = 8
---------------- extended type size ----------------
pChar+1 = 1
pInt+1 = 4
pDouble+1 = 8
---------------- extended type size ----------------
sizeof(time_t) = 8
结论:在标准c\c++中long在32位系统占4个字节,在64位系统占8个字节,但在windows的VC中long始终占4字节。