有时候,总想验证一些奇怪的想法,干脆就写下来,以备后查。
想法:VC常用基本类型的字节大小
// 函数功能: 测试VC基本类型
// 备 注: 占用空间大小等
void TestCase_BaseTypeSize()
{
#ifndef _WIN64
printf_s("running with x86. \n");
#else
printf_s("running with x64. \n");
#endif
printf_s("---------------- c basic type size ---------------- \n");
printf_s("sizeof(bool) = %d \n", sizeof(bool)); // 1
printf_s("sizeof(int) = %d \n", sizeof(int)); // 4
printf_s("sizeof(char) = %d \n", sizeof(char)); // 1
printf_s("sizeof(short) = %d \n", sizeof(short)); // 2
printf_s("sizeof(long) = %d \n", sizeof(long)); // 4
printf_s("sizeof(float) = %d \n", sizeof(float)); // 4
printf_s("sizeof(double) = %d \n", sizeof(double)); // 8
printf_s("sizeof(wchar_t) = %d \n", sizeof(wchar_t)); // 2
printf_s("sizeof(int*) = %d \n", sizeof(int*)); // 4(x86) 8(x64)
printf_s("sizeof(char*) = %d \n", sizeof(char*)); // 4(x86) 8(x64)
printf_s("---------------- extended type size ---------------- \n");
char *pChar = NULL;
printf_s("pChar+1 = %d \n", pChar+1); // 1
int *pInt = NULL;
printf_s("pInt+1 = %d \n", pInt+1); // 4
double *pDouble = NULL;
printf_s("pDouble+1 = %d \n", pDouble+1); // 8
printf_s("---------------- extended type size ---------------- \n");
printf_s("sizeof(time_t) = %d \n", sizeof(time_t)); // 4(x86) 8(x64)
printf_s("sizeof(__time32_t) = %d \n", sizeof(__time32_t)); // 4
printf_s("sizeof(__time64_t) = %d \n", sizeof(__time64_t)); // 8
printf_s("sizeof(LONGLONG) = %d \n", sizeof(LONGLONG)); // 8
printf_s("sizeof(LARGE_INTEGER) = %d \n", sizeof(LARGE_INTEGER)); // 8
printf_s("sizeof(ULARGE_INTEGER) = %d \n", sizeof(ULARGE_INTEGER)); // 8
printf_s("sizeof(DWORD) = %d \n", sizeof(DWORD)); // 4
printf_s("sizeof(DWORD32) = %d \n", sizeof(DWORD32)); // 4
printf_s("sizeof(DWORD64) = %d \n", sizeof(DWORD64)); // 8
printf_s("sizeof(LONG) = %d \n", sizeof(LONG)); // 4
printf_s("sizeof(LONG32) = %d \n", sizeof(LONG32)); // 4
printf_s("sizeof(LONG64) = %d \n", sizeof(LONG64)); // 8
printf_s("sizeof(INT) = %d \n", sizeof(INT)); // 4
printf_s("sizeof(INT32) = %d \n", sizeof(INT32)); // 4
printf_s("sizeof(INT64) = %d \n", sizeof(INT64)); // 8
}
执行结果:
Visual Leak Detector Version 2.5.1 installed.
running with x86.
---------------- c basic type size ----------------
sizeof(bool) = 1
sizeof(int) = 4
sizeof(char) = 1
sizeof(short) = 2
sizeof(long) = 4
sizeof(float) = 4
sizeof(double) = 8
sizeof(wchar_t) = 2
sizeof(int*) = 4
sizeof(char*) = 4
---------------- extended type size ----------------
pChar+1 = 1
pInt+1 = 4
pDouble+1 = 8
---------------- extended type size ----------------
sizeof(time_t) = 8
sizeof(__time32_t) = 4
sizeof(__time64_t) = 8
sizeof(LONGLONG) = 8
sizeof(LARGE_INTEGER) = 8
sizeof(ULARGE_INTEGER) = 8
sizeof(DWORD) = 4
sizeof(DWORD32) = 4
sizeof(DWORD64) = 8
sizeof(LONG) = 4
sizeof(LONG32) = 4
sizeof(LONG64) = 8
sizeof(INT) = 4
sizeof(INT32) = 4
sizeof(INT64) = 8
No memory leaks detected.
Visual Leak Detector Version 2.5.1 installed.
running with x64.
---------------- c basic type size ----------------
sizeof(bool) = 1
sizeof(int) = 4
sizeof(char) = 1
sizeof(short) = 2
sizeof(long) = 4
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
sizeof(__time32_t) = 4
sizeof(__time64_t) = 8
sizeof(LONGLONG) = 8
sizeof(LARGE_INTEGER) = 8
sizeof(ULARGE_INTEGER) = 8
sizeof(DWORD) = 4
sizeof(DWORD32) = 4
sizeof(DWORD64) = 8
sizeof(LONG) = 4
sizeof(LONG32) = 4
sizeof(LONG64) = 8
sizeof(INT) = 4
sizeof(INT32) = 4
sizeof(INT64) = 8
No memory leaks detected.