Re: 請問有沒有compiler option 可以用來忽略sign ?

看板Programming作者 (小心課業閉鎖空間...)時間18年前 (2006/06/19 16:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《xiaudai.bbs@bbs.cis.nctu.edu.tw (小呆)》之銘言: : 請教各位, : 在VC++裡, 以下程式的第 5 行並不會成立, 原因是 ch : 已經被轉為負值, : 但在某些老舊的compiler裡, 第5行會成立 : 因為它直接做記憶體內容比對. : 請問VC++裡有沒有compiler option可以忽略 sign ? : 感謝 : 1 void main() { : 2 char ch, x=0; : 3 : 4 ch=0x81; : 5 if(ch == 0x81) x=1; if(ch == (char)0x81) x=1; : 6 } 這樣試試 因為如果我沒記錯的話 單純寫數字在VC++裡是視為int的 然後大範圍資料和小範圍資料是會把小的upcast到大的去比 於是它把char的0x81(-127)給upcast成int的0xFFFFFF81(也是-127) 再去比 把那個0x81強制變成char應該就可以成立了 -- 有人喜歡邊玩遊戲上逼; 也有人喜歡邊聽歌打字。 但是,我有個請求, 選字的時候請專心好嗎? -- 改編自「古 火田 任三郎」之開場白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.240.54
文章代碼(AID): #14bcEtY4 (Programming)
文章代碼(AID): #14bcEtY4 (Programming)