利用siezof运算现实存储各种数据类型使用内存空间的字节数

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值