这是《程序员面试攻略》上的一道题,先前也有一位公司同事问过我,今天有重新拿起看了一下。
书中介绍了两种方法
第一种是这样的利用强制类型转换
bool endianness()
{
int testNum;
char* ptr;
testNum = 1;
ptr = (char*)&testNum;
return ptr;
}
这个方法还比较好理解。
第二种方法就是利用union。
bool endianness()
{
union{
int theInteger;
char singleChar;
}endianTesg;
endianTest.theInteger = 1;
return endianTest.singleChar;
}
这种方法很巧妙。带着困意就是没有看懂,一个个问号就蹦出来了?这是为什么呢?
说实话,union在学习和工作中用的还真的不是很多。其用法还真是不记得。
所以赶快到网上去搜了一下。有篇文章还不错,我看懂了。
共用体union用法讲解链接地址:
http://blog.ednchina.com/likee/20666/message.aspxUnion表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量。其长度为Union中最大的变量长度。
这样,我们就不难理解上面的程序,theInteger和singleChar是共用一个内存位置的,如果是小尾数法的话,那么singleChar为1,对应theInteger的低八位;如果是大尾数法的话,那么singleChar为0, 对应theInteger的低八位。
继续努力学习!
朝着梦想加油前进。
posted on 2009-07-28 15:04
Sandy 阅读(769)
评论(0) 编辑 收藏 引用 所属分类:
c++学习