#include <stdio.h>
void main()
{
    int i = 1;
    int j = 2;
    long p1 = (long)(&i);
    long p2 = (long)(&j);
    printf("(p1-p2)>0: p1=0x%08X, p2=0x%08X, p1 %s p2\n",
                 p1, p2, (p1-p2)>0 ? ">" : "<");
    printf("  p1 > p2: p1=0x%08X, p2=0x%08X, p1 %s p2\n",
                 p1, p2, p1>p2 ? ">" : "<");
}

解决方案 »

  1.   

    俺运行Release版,没有啥问题,不知楼主所为何意?
      

  2.   

    是不是你改过release里面的设置 重新建立一个工程然后用release配置编译试试
      

  3.   

    用的vc的默认编译优化设置Maximize Speed(p1-p2)>0: p1=0x0012FF80, p2=0x0012FF7C, p1 > p2
      p1 > p2: p1=0x0012FF80, p2=0x0012FF7C, p1 < p2这是我的运行结果:第二行明显大小比较错误,我看了生成的Release汇编代码,
    比较运算被优化掉了,在编译时就计算出了真假,但是优化错了。cl.exe 版本:12.0.8168.0不光是这儿错误,在任何函数里面这样写都会出错