int a = 6,b = 6,c = 6,d = (++a)+(++a)+(++a),e = (++b)+(++b),f = (++c)+c;
问vc实现,d e f 值各是多少,怎么解释。

解决方案 »

  1.   

    d=7+8+9=24
    e=7+8=15
    f=7+7=14++a是先自身+1然后赋值,所以第一个就是7,其余相同道理
      

  2.   

    刚才试了一下
    d=25;
    e=16=8+8;
    f=14=7+7;
    d怎么来的就不知道了,哪位高手解释一下d编译出的汇编代码。
      

  3.   

    在C#下试了确实是这种结果啊 d=7+8+9=24 
     有人能解释一下吗int a = 6, b = 6, c = 6;
    0000003a  mov         esi,6 
    0000003f  mov         edi,6 
    00000044  mov         ebx,6 
                int f = (++a) + (++a) + (++a);
    00000049  inc         esi  
    0000004a  mov         dword ptr [ebp-58h],esi 
    0000004d  inc         esi  
    0000004e  mov         eax,dword ptr [ebp-58h] 
    00000051  add         eax,esi 
    00000053  mov         dword ptr [ebp-5Ch],eax 
    00000056  inc         esi  
    00000057  mov         eax,dword ptr [ebp-5Ch] 
    0000005a  add         eax,esi 
    0000005c  mov         dword ptr [ebp-4Ch],eax 
      

  4.   

    要看参数为
    (1)左传递
    (2)右传递
    注意: C++ 使用之前加 6 : 6 7
          ++C 使用之后加 6 :7 7
          如C=++C    8