[問題] 記憶體的值用unisgned char[]來存取

看板C_and_CPP作者 (正面對決吧)時間13年前 (2012/07/03 12:27), 編輯推噓5(507)
留言12則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我知道在某變數在記憶體的值可以用union或是memcpy的方式達成 但是想請教為何要用unsigned char[]來放置,而不是char[] 爬文查到用unsigned char[]會比 char[]來得嚴謹 想請問在此用unsigned char[]與char[]差在那邊呢? 又何時較會用unsigned char[],謝謝版上大大 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 比如 int i; union{ float a; unsigned char n[4]; }u; u.a=3.25; for(i=3;i>=0;--i)   printf("%x ", u.n[i]); 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.225.172 ※ 編輯: phyllispig 來自: 114.34.225.172 (07/03 12:28)

07/03 12:32, , 1F
unsigned char 有標準強力保證沒有 padding 等各種怪東西
07/03 12:32, 1F

07/03 12:53, , 2F
然後建議除非真的需要,否則沒事不要玩 union 玩過火...
07/03 12:53, 2F

07/03 12:54, , 3F
union應該是因應當年記憶體幾百k的年代的產物吧?@@
07/03 12:54, 3F

07/03 19:36, , 4F
union在嵌入式系統仍常使用
07/03 19:36, 4F

07/04 10:31, , 5F
想問一下bool和uint是否一樣,目前遇到用bool取值他不只哪1by
07/04 10:31, 5F

07/04 10:31, , 6F
te來解釋,另我不得其解,但我用的是c#…
07/04 10:31, 6F

07/04 10:34, , 7F
為什麼C#需要關心bool有多大?我從來沒想過耶..XD
07/04 10:34, 7F

07/04 11:38, , 8F
bool >= char, that's all, 不過這是C++ XDD
07/04 11:38, 8F

07/04 21:40, , 9F
marshal什麼鬼的成bytearray, 傳給c++填值
07/04 21:40, 9F

07/04 21:42, , 10F
填完把bytearray轉回原struct..發現bool那field 會不只取1byt
07/04 21:42, 10F

07/04 21:43, , 11F
e, 把padding 的都算近來解釋,沒清成全0會always true...
07/04 21:43, 11F

07/04 21:44, , 12F
byte型態 卻沒這問題,相當好奇
07/04 21:44, 12F
文章代碼(AID): #1FydJ9By (C_and_CPP)