在linux C C++入门与进阶中范例4.13:
#include <iostream>
using namespace std;
int main(void)
{
short sh;
int i,i_arr(5),*i_ptr;
long l;
float f,f_arr(5),*f_ptr;
double d;
long double ld;
char c,*c_ptr;
char str(10);
bool b,b_arr(5),*b_ptr;
cout << "---Variables---"<<endl;
cout <<"sizeof(short)="<<sizeof(short)
<<",sizeof(sh)="<<sizeof(sh)<<endl;
cout <<"sizeof(int)="<<sizeof(int)
<<",sizeof(i)="<<sizeof(i)<<endl;
cout <<"sizeof(long)="<<sizeof(long)
<<",sizeof(l)="<<sizeof(l)<<endl;
cout <<"sizeof(i_arr)="<<sizeof(i_arr)<<endl;
cout <<"(float)"<<endl;
cout <<" sizeof(float)="<<sizeof(float)
<<",sizeof(f)="<<sizeof(f)<<endl;
cout <<" sizeof(double)=" << sizeof(double)
<<",sizeof(d)="<<sizeof(d)<<endl;
cout <<" sizeof(long double)="<<sizeof(long double)
<<",sizeof(ld)="<<sizeof(ld)<<endl;
cout <<" sizeof(f_arr)="<<sizeof(f_arr)<<endl;
cout <<"(char)"<<endl;
cout <<"sizeof(char)="<<sizeof(char)<<",sizeof(c)="
<<sizeof(c)<<",sizeof(str)="<<sizeof(str)<<endl;
cout <<"(bool)"<<endl;
cout <<" sizeof(bool)="<<sizeof(bool)<<",sizeof(b)="
<<sizeof(b)<<",sizeof(b_arr)="<<sizeof(b_arr)<<endl;
cout <<"(pointer)"<<endl;
cout << " sizeof(i_ptr)="<<sizeof(i_ptr)<<endl;
cout << " sizeof(f_ptr)="<<sizeof(f_ptr)<<endl;
cout << " sizeof(c_ptr)="<<sizeof(c_ptr)<<endl;
cout << " sizeof(b_ptr)="<<sizeof(b_ptr)<<endl;
cout <<endl<<"----Constants----"<<endl;
cout <<"(int)"<<endl;
cout <<" sizeof(123)="<<sizeof(123) <<endl;
cout <<" sizeof(123u)="<<sizeof(123u) <<endl;
cout <<" sizeof(123l)="<<sizeof(123l) <<endl;
cout <<" sizeof(123ul)="<<sizeof(123ul) <<endl;
cout <<"(float)"<<endl;
cout <<" sizeof(1.2f)="<<sizeof(1.2f) <<endl;
cout <<" sizeof(1.2)="<<sizeof(1.2) <<endl;
cout <<" sizeof(1.2l)="<<sizeof(1.2l) <<endl;
cout <<"(char)"<<endl;
cout <<" sizeof('a')="<<sizeof('a') <<endl;
cout <<" sizeof(\"a\")="<<sizeof("a") <<endl;
cout <<"(bool)"<<endl;
cout <<" sizeof(true)="<<sizeof(true) <<endl;
return 0;
}
在ubuntu 14.04 64版本中运行的结果:
---Variables---
sizeof(short)=2,sizeof(sh)=2
sizeof(int)=4,sizeof(i)=4
sizeof(long)=8,sizeof(l)=8
sizeof(i_arr)=4
(float)
sizeof(float)=4,sizeof(f)=4
sizeof(double)=8,sizeof(d)=8
sizeof(long double)=16,sizeof(ld)=16
sizeof(f_arr)=4
(char)
sizeof(char)=1,sizeof(c)=1,sizeof(str)=1
(bool)
sizeof(bool)=1,sizeof(b)=1,sizeof(b_arr)=1
(pointer)
sizeof(i_ptr)=8
sizeof(f_ptr)=8
sizeof(c_ptr)=8
sizeof(b_ptr)=8
----Constants----
(int)
sizeof(123)=4
sizeof(123u)=4
sizeof(123l)=8
sizeof(123il)=8
(float)
sizeof(1.2f)=4
sizeof(1.2)=8
sizeof(1.2l)=16
(char)
sizeof('a')=1
sizeof("a")=2
(bool)
sizeof(true)=1
kent@kent-H61M-S2V-B3:~$ ./mrun.sh sizeof
---Variables---
sizeof(short)=2,sizeof(sh)=2
sizeof(int)=4,sizeof(i)=4
sizeof(long)=8,sizeof(l)=8
sizeof(i_arr)=4
(float)
sizeof(float)=4,sizeof(f)=4
sizeof(double)=8,sizeof(d)=8
sizeof(long double)=16,sizeof(ld)=16
sizeof(f_arr)=4
(char)
sizeof(char)=1,sizeof(c)=1,sizeof(str)=1
(bool)
sizeof(bool)=1,sizeof(b)=1,sizeof(b_arr)=1
(pointer)
sizeof(i_ptr)=8
sizeof(f_ptr)=8
sizeof(c_ptr)=8
sizeof(b_ptr)=8
----Constants----
(int)
sizeof(123)=4
sizeof(123u)=4
sizeof(123l)=8
sizeof(123ul)=8
(float)
sizeof(1.2f)=4
sizeof(1.2)=8
sizeof(1.2l)=16
(char)
sizeof('a')=1
sizeof("a")=2
(bool)
sizeof(true)=1
其中值得注意的地方:
64位机器 32位机器(教材)
指针占8个; 4
short占4个 4
long占8个. 4
阵列大小显示的是数据类型的大小4 4X5=20
float 4 4
double 8 8
long double 16 12