int ic = sizeof(bool); // x86:1 x64:1
int id = sizeof(char); // x86:1 x64:1
int i4 = sizeof(short); // x86:2 x64:2
int i8 = sizeof(WORD); // x86:2 x64:2
int i9 = sizeof(DWORD); // x86:4 x64:4
int i1 = sizeof(int); // x86:4 x64:4
int i2 = sizeof(long); // x86:4 x64:4
int i5 = sizeof(float); // x86:4 x64:4
int i0 = sizeof(LONGLONG); // x86:8 x64:8
int i6 = sizeof(double); // x86:8 x64:8
int ia = sizeof(HANDLE); // x86:4 x64:8
int ib = sizeof(HWND); // x86:4 x64:8
int i7 = sizeof(int*); // x86:4 x64:8
int i3 = sizeof(void*); // x86:4 x64:8
1.sizeof几点说明,sizeof取的数值不是操作系统绝定的,它由编译器在编译期间就已经定了下来,
在编译好的exe文件中,sizeof的位置会被一个常数代替,
编译成32位程序时,指针类型都是4字节,
编译成64位程序时,指针类型都是8字节。
其他的基本类型大小都是一样的。
2.sizeof取结构体时,存在字节对齐的问题。
3.sizeof取类时,和结构体一样,当没有成员变量的结构体或类时的大小是1,
静态变量和成员函数不占用sizeof的大小。
4.sizeof取枚举类型是就是 sizeof(int)
5.sizeof取联合体时,是最大的那个类型的长度。
6.sizeof取数组时,取的是数组大小。
7.sizeof 后面如果是变量名 可以不用括号。