在VC中:int i=3;
int j=(++I)+(++i)+(++i);
cout<<j<<endl;debug和release模式的结果是不一样的。你从没有怀疑过microsoft?
如果没有,请从现在开始。我还没看你的代码。

解决方案 »

  1.   

    to ahphone(阿丰):
        代码就是上面的呀,只不过在linux上用G++编译的结果如下:
        construct
        destruct
        destruct
        destruct在VC中是这样的结果:
    construct
    destruct 
    destruct
              为什么?我不相信MS,也不盲目相信LINUX,我相信C++的标准语法.
      

  2.   

    按道理VC中的结果是对的呀。可能是g++的问题吧。
      

  3.   

    to xxxbird(*说你行,你就行,不行也行*) 
    GCC已经到了第3.0版了,可这个问题还没有解决,但我又觉得搞GCC的那一帮高手应该注意到了这个问题了吧,难道是我们的语法太差吗?
    假设要在constructor 和destructor 中进行对动态内存的操作,那可真让人心惊胆颤.
      

  4.   

    如果使用  g++ -O3 来进行优化编译的话,
    那么你的程序的运行结果就应该和 VC下的运行结果一致的了!
    可能VC下默认将编译的优化选项调的比较高(我对VC不太熟悉)
    想必 VC下也有一个选项可以让你来控制编译的优化程度吧!
      

  5.   

    to hesi726(hesi):
    我试过了,还是不行, 但还是要谢谢你!!!我给你分.