tc知道,是每一项运算后再相加得18
vc确实很奇怪,我算s=(++i)+(++i)得10,以次推论是两项相加后再加第三项,不知对不对?

解决方案 »

  1.   

    vc++:呵呵
    i=3;
    int k=(i++)+(i++)+(i++);
    k=9??????
    我看过一本书,"VC排错指南"好象是说VC的BUG
      

  2.   

    这跟编译有关,在VC下它先编译成汇编语,然所再编成机器码,编译成汇编的时候如下所示,你自己可以看看吧!
    i=3;s=(++i)+(++i)+(++i);
     mov         dword ptr [ebp-8],3
     mov         eax,dword ptr [ebp-8]
     add         eax,1
     mov         dword ptr [ebp-8],eax
     mov         ecx,dword ptr [ebp-8]
     add         ecx,1
     mov         dword ptr [ebp-8],ecx
     mov         edx,dword ptr [ebp-8]
     add         edx,dword ptr [ebp-8]
     mov         eax,dword ptr [ebp-8]
     add         eax,1
     mov         dword ptr [ebp-8],eax
     add         edx,dword ptr [ebp-8]
     mov         dword ptr [ebp-0Ch],edx你知道为什么等于16 了吧!