作者syntex (飄蕩者)
看板C_and_CPP
標題Re: [問題] C的新手發問
時間Tue May 19 22:17:57 2009
※ 引述《pubp (猛欽)》之銘言:
: 今天遇到一個題目
: 宣告byte A[10]={1,2,....,10}
: 並宣告 Uint16 *AA
: AA=(Uint16*)A;
: 請問 AA[1]=?
: 這裡我不了解的是Uint16
: 請問答案是什麼?
推文有解釋 byte和Uint16的區別。
針對AA[1]解決一下好了,
宣告一個byte陣列,在記憶體中攤成二進位來看就是
A[0] A[1] A[2] A[3]
00000001 00000010 00000011 00000100 ........
A表示一個byte大小的指標,現在硬把他擴充成Uint16
然後assign給AA。
所以就變成
AA[0] AA[1] ........
00000001 00000010 00000011 00000100 ........
所以AA[1]以就是772(10)。
補充:
我真的忽略了 little endian和 big endian的差別了 XD
上述是big endian的狀況,如果是little endian的話就變
成原文推文說的1027(10)了。
intel系的電腦應該都是little endian。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.136.7
1F:推 VictorTom:你忘了考慮大小印弟安不同的case了; 在VC測的話應該像原 05/19 22:25
2F:推 zlw:也許在little endian的CPU下是1027?嗯...不確定 05/19 22:25
3F:→ VictorTom:文4F推的是1027:) 05/19 22:26
4F:→ VictorTom:好像有點錯, 應該是看大小印弟安的環境XD 05/19 22:29
※ 編輯: syntex 來自: 118.171.136.7 (05/19 22:38)
5F:推 cole945:UINT16是4byte?? 從哪裡看來的.___.?? 05/20 01:39
※ 編輯: syntex 來自: 220.228.236.56 (05/20 08:54)
6F:推 stonehomelaa:印地安是 indian XD 05/20 13:28
7F:→ stonehomelaa:中文書作者不懂就亂翻成印第安... 05/20 13:30
8F:推 VictorTom:對不起~~印地安是小弟我英文差不會拼才這樣打的啦Orz 05/20 13:30
9F:推 stonehomelaa:以前看到某本書這樣翻 我以為你是被該書騙了XD 05/20 14:18
10F:推 zlw:只是想要作有趣的聯想幫助記憶吧,我也都是記小印地安 05/20 14:37
11F:推 VictorTom:其實我只知道印地安, 大小是哪一種case還老是會記反Q_Q~ 05/20 14:43