Re: 請問有沒有compiler option 可以用來忽略sign ?
※ 引述《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
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章