作者LPH66 (小心课业闭锁空间...)
看板Programming
标题Re: 请问有没有compiler option 可以用来忽略sign ?
时间Mon Jun 19 16:45:58 2006
※ 引述《[email protected] (小呆)》之铭言:
: 请教各位,
: 在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