cout<<sizeof(int)<<endl; // 32位机上int长度为4 cout<<sizeof(1==2)<<endl; // == 操作符返回bool类型,相当于 cout<<sizeof(bool)<<endl; |
cout<<4<<endl; cout<<1<<endl; |
int a = 0; cout<<sizeof(a=3)<<endl; cout<<a<<endl; |
int a = 0; cout<<4<<endl; cout<<a<<endl; |
int i = 2; cout<<sizeof(i)<<endl; // sizeof(object)的用法,合理 cout<<sizeof i<<endl; // sizeof object的用法,合理 cout<<sizeof 2<<endl; // 2被解析成int类型的object, sizeof object的用法,合理 cout<<sizeof(2)<<endl; // 2被解析成int类型的object, sizeof(object)的用法,合理 cout<<sizeof(int)<<endl;// sizeof(typename)的用法,合理 cout<<sizeof int<<endl; // 错误!对于操作符,一定要加() |
cout<<sizeof(unsigned int) == sizeof(int)<<endl; // 相等,输出 1 |
typedef short WORD; typedef long DWORD; cout<<(sizeof(short) == sizeof(WORD))<<endl; // 相等,输出1 cout<<(sizeof(long) == sizeof(DWORD))<<endl; // 相等,输出1 |
int f1(){return 0;}; double f2(){return 0.0;} void f3(){} cout<<sizeof(f1())<<endl; // f1()返回值为int,因此被认为是int cout<<sizeof(f2())<<endl; // f2()返回值为double,因此被认为是double cout<<sizeof(f3())<<endl; // 错误!无法对void类型使用sizeof cout<<sizeof(f1)<<endl; // 错误!无法对函数指针使用sizeof cout<<sizeof*f2<<endl; // *f2,和f2()等价,因为可以看作object,所以括号不是必要的。被认为是double |
cout<<sizeof(string*)<<endl; // 4 cout<<sizeof(int*)<<endl; // 4 cout<<sizof(char****)<<endl; // 4 |
char a[] = "abcdef"; int b[20] = {3, 4}; char c[2][3] = {"aa", "bb"}; cout<<sizeof(a)<<endl; // 7 cout<<sizeof(b)<<endl; // 20*4 cout<<sizeof(c)<<endl; // 6 |
int *d = new int[10]; cout<<sizeof(d)<<endl; // 4 |
double* (*a)[3][6]; cout<<sizeof(a)<<endl; // 4 cout<<sizeof(*a)<<endl; // 72 cout<<sizeof(**a)<<endl; // 24 cout<<sizeof(***a)<<endl; // 4 cout<<sizeof(****a)<<endl; // 8 |
a是一个很奇怪的定义,他表示一个指向 double*[3][6]类型数组的指针。既然是指针,所以sizeof(a)就是4。
既然a是执行double*[3][6]类型的指针,*a就表示一个double*[3][6]的多维数组类型,因此sizeof(*a)=3*6*sizeof(double*)=72。同样的,**a表示一个double*[6]类型的数组,所以sizeof(**a)=6*sizeof(double*)=24。***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8。
原文地址:http://blog.csdn.net/luguifang2011/article/details/39988627