標題: Re: [請益] C 變數型態 可攜
時間: Mon Feb 4 11:02:52 2013
http://www.ptt.cc/bbs/Programming/M.1359946975.A.AFC.html
這篇提到一個有趣的程式碼:
不過 「char 是 signed 或是 unsigned 是由 c compiler 決定的」, 並不是標準, 在 gcc 上得到 0, 那麼在其他的 c compiler 的結果呢? 找到反證才能證明, 才能確信上面的話是對的。
我總是對這樣的事情半信半疑, 雖然書上應該不會有錯, 但總是希望找到證明。還好, 很容易就找到了。
openwatcom c/c++ 就是一個反例:
C: 1 a: 255 b: 255這是由 openwatcom c/c++ 編譯後的執行結果, char b 是 unsigned。
gnu c 的版本呢?
C: 0 a: 255 b: -1char b 是 signed。
使用 char 要記得這件事, 要不然遇到 signed/unsiged 地雷, 可是想破頭都不知道為什麼。
這是在 C 專家編程這本書看到的。
我一直以為不管是 signed 或 unsigned, 在 C 裡應該都只是比較變數的值 (都是 0xff), 原來是有差別的, 果然凡事都應該實驗過... 感謝分享!!
回覆刪除