C++学习笔记2,各基础类型及共用体的长度测试

一:在Windows下测试

//测试环境为Windows7 32bit,IDE为VS2010

测试源码:

#include <iostream>
using namespace std;

//基础类型及共用体测试


union unionOne{//长度为1,无疑问
	char c;
};
union unionTwo{//长度=4,说明了共用体的长度是所有元素长度中长度最长那个变量的,无疑问
	char c;//sizeof(char)=1
	int number;//sizeof(int)=4
};
union unionThree{//长度为8,即double的长度,无疑问
	char c;
	int i;
	double d;

};

//结构体
struct structZero//长度为1,无疑问
{
	char c;
};

int main()
{
	//基本类型测试
	cout<<"sizeof(int)="<<sizeof(int)<<endl;//4
	cout<<"sizeof(float)="<<sizeof(float)<<endl;//4
	cout<<"sizeof(double)="<<sizeof(double)<<endl;//8
	cout<<"sizeof(short)="<<sizeof(short)<<endl;//2

	cout<<"sizeof(char)="<<sizeof(char)<<endl;//1
	cout<<"sizeof(bool)="<<sizeof(bool)<<endl;	//1
	cout<<"sizeof(true)="<<sizeof(true)<<endl<<endl;//1

	//可以看出,这里的指针的长度都是4
	cout<<"sizeof(int*)="<<sizeof(int*)<<endl;//4
	cout<<"sizeof(char*)="<<sizeof(char*)<<endl;//4
	cout<<"sizeof(double*)="<<sizeof(double*)<<endl;//4
	cout<<"sizeof(double**)="<<sizeof(double**)<<endl<<endl;//4

	//可以看出,union的长度即里面长度最大的成员的长度
	cout<<"sizeof(unionOne)="<<sizeof(unionOne)<<endl;//1
	cout<<"sizeof(unionTwo)="<<sizeof(unionTwo)<<endl;//4
	cout<<"sizeof(unionThree)="<<sizeof(unionThree)<<endl<<endl;//8

	cin.get();

}

测试结果:



二:在fedora20/linux  64bit下测试

gcc version=4.8.2



可以看出,在Windows 32bit里面,指针是用4个字节来表示的,也就是4*8=32bit;

在linux 64bit里面,指针用8个字节表示,8*8=64,可以看出这里面的规律了吧。那么在16bit里面,是不是用16/8=2来表示的呢?

这个留给你们自己去测试吧。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值