测试环境:
WindowsXPsp2 + VC6sp6错误:
VC的IDE自带的watch框,对于移位操作有问题。
(经过测试,移位达到10位及以上,辄产生错误)错误重现环境:
随便建立一个MFC的对话框工程,
执行一段代码:
DWORD a;
a=0x354d03;
DWORD b;
b=a>>16;
那么b的结果是0x35,这个没话说。
好,在b=a>>16一句上加个断点,进入调试态,
在watch框中输入a,是0x354d03,好的,没错;
再在watch框中输入a>>16,结果竟然是0!哈哈!反复测试,移位1-9位都是好的,到了10位以上VC就发疯了。

解决方案 »

  1.   

    BUG就BUG咧,反正快没人用了,而且运行的时候能正确呀.
    不知道VC8下会怎么样呢? 
    我也是用的VC6
      

  2.   

    哼哼,也许有一天你吃上亏的时候就不会说“BUG就BUG咧”^_^
      

  3.   

    上报MS,VC6得打SP7(是MS最大的SP号码了吧)了.
      

  4.   

    MS早不支持VC6了,它不会再给俺们打SP啦.
      

  5.   

    再在watch框中输入a>>16,结果竟然是0!
    因为这时候你显示的是Hex方式,所以a>>0x16右移22位,所以为0
    ps.这个bug早就发现了,http://topic.csdn.net/T/20050428/09/3972385.html