int i=5;
int n=i+(i++)+(++i);
运行结果 n=?+?+?

解决方案 »

  1.   

    第一个i没变,第二个i也是用后再自动加一,加的时候为5,加完变6,第三个i因为前面+1,然后自己是先加再用,变为7,所以是5+5+7
      

  2.   

    int i = 5;
    int i1 = 0;
    int i2 = 0;
    i1 = i++; //等同于i1=i;i=i+1;
    i2 = i++; //等同于i2=i+1;i=i+1;
      

  3.   

    运行结果是n=5+5+7;因为  i++和++i是有区别的,i++是先赋值再进行运算,++i是先运算再赋值
    int i=5;        
     int n=i+(i++)+(++i); 
    我是这么理解的:
    i++ 中的i是5,但运算过后是6,i++是先赋值再进行运算
    ++i 前面i运算过后是6,先加1,那么i就7
    所以是 5+5+7
    若int n=i+(++i)+(i++) 就是5+6+6
    如果你把 i,i++,++i的位置换一下肯定会得不同的结果
     
      

  4.   

    我觉得是n=5+5+7
    i++是先运算后加1,++i是先加1后运算
    所以n=i+(i++)+(++i)是n=5+5+7
      

  5.   

    应该是 5+5+7
    开始i=5;
    根据+的结合顺序
    所以 第一个i=5;
         第二个i++;使i=6;
         则 第三个 ++i;i=7;计算时也为7
      

  6.   

    运算符自增问题:
    http://blog.csdn.net/zhaoming262350/article/details/8220361  i=5,进行i++运算时,先赋值后运算,所以 i+(i++) =5+5,而当执行完i++后,i=6,等到执行++i时,要先进行运算后进行赋值,所以加在5+5后面的值是7 就是5+5+7      
    public class TestS
    {
    public static void main(String [] args)
    {
    int i=5;
    int n=i+(i++)+(++i);  
                  
    System.out.println(n);
    }
    }
      

  7.   

    5+5+7,第一个i是不变的,第二个i++的意思是,先操作再加1,第三个则是先加1再操作,
    n =  i + (i++) + (++i)可以写为:n = i + i;
    i = i +1;
    i = i +1;
    n = n + i;
      

  8.   

    int i=5;
            int n=i+(i++)+(++i);
    这个应该是先算括号里的和自加
    也不是说先算(++i)和(i++) 即先算++i和i++ 这两个里面一个是先赋值后运算,一个是先运算后赋值
    所以运算里的i++可以先不考虑其运算过程,当i来使用即可
    这时n=i+(i++)+(++i)就成了n=i+i+i,而因为++i是先赋值后运算,导致这里的i成了i=i+1然后才参与运算
    即n=i+i+i这里的i是先执行了i=i+1后的,所以n应该是18