如果int i=4;
int y=i+++++i;
则y等于多少??如何判断??

解决方案 »

  1.   

    结果是10
    i++ 是 4 
    ++i 是 6(i++在后一次用到i时,是5,然后++i是6)
    y=4+6
      

  2.   

    应该是这样子写的y = i++ + ++i;
      

  3.   

    没空格不行吧:
    int y = i++ + ++i;
    i++ =4 随后i=5
    ++i = 64+6 = 10
      

  4.   

    i++的值为4,i变成5
    ++i的值为6,i变成6
    所以 y=4+6=10
      

  5.   

    你这句话,应该没法编译吧?要加上空格:int y=i++ + ++i;加上空格后,其实就很容易理解了吧?因为 ++ 运算符的特殊性,i++会在整个表达式运算完成后才执行,而++i会在表达式计算之前就执行,所以上面这句话相当于被拆解成:
    ++i;
    int y = i+i;
    i++;所以y=5,i=6
      

  6.   

    我想问的就是为什么我写那个编译不通过呢??
    如何判断是否能编译通过呢????
    比如
    int i=4;
    int y=i+++i+++i++;
    就能通过
      

  7.   

    基于lz的纠结,我去eclipse上面测试了一下,发现编译的时候 i++ 后面可以有 + 号,但是 ++i 前面不能有加号。
      

  8.   

    int y = (i++) + (++i);
      

  9.   

    如果int i=4;
    int y=i+++++i;
    计算步骤:
    int y = (i++) + (++i); 
    int y = 4 + (++i); //这个时候i变成了5
    int y = 4 + (++5)//++5 等于6
    int y = 4+ 6=10
      

  10.   

    不管是先i++,还是先++i,结果都是10。。i++ + ++i中间的+必须有空格。。
      

  11.   

    如果int i=4;
    int y=i+++++i;
    计算步骤:
    int y = (i++) + (++i);  
    int y = (i++) + 5; 
    int y = 5 + 5=10; 
      

  12.   

    y = i++ + ++i
    相当于// 解析i++
    t1 = i;
    i = i +1;
    // 解析++i
    i = i + 1;
    t2 = i;
    // 等式结果
    y = t1 + t2;