這是《程序員面試攻略》上的一道題,先前也有一位公司同事問過我,今天有重新拿起看了一下。
書中介紹了兩種方法
第一種是這樣的利用強制類型轉換
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 閱讀(785)
評論(0) 編輯 收藏 引用 所屬分類:
c++學習