以下语句将打印什么? 这道题很有意思的.
int i = 0, j = 0;
i = ++i + ++i + ++i;
j = j++ + j++ + j++ + j++;
System.out.println( i );
System.out.println( j );

解决方案 »

  1.   

    如果谁的程序中有这样几句代码,一定会被人骂成sb
    如果这段代码仅仅是为了测试,你可以Copy到JBuilder下运行看看结果
    实在没感觉哪里经典与有意思
      

  2.   

    写在程序当中当然是不可能的,j的值为什么会打印6,而如果int b = j++ + j++ + j++ + j++; 
    那么这个时候j的值却不6,而是7.  为什么会等于6呢?换成另外一个变量为什么最后的j++又会执行呢?
    虽然一看就知道答案,但为什么会这样百思不得其解.
      

  3.   

    就算是用int b 来替换 i 输出的结果还是 6,6 啊!
      

  4.   

    i=++i + ++i + ++i;
    i=1+2;
    i=3+4=7;j=j++ + j++ + j++ + j++;
    j=0+1;
    j=1+1;
    j=2+2=4;
      

  5.   

    有编译器的问题,我刚上大一时的一个问题,那个时候刚学c++,我朋友用的vc 6.0 
    一个学长用的是c的什么编译器,
    我们机房用的是vs 2003结果出的结果不同,没什么好想的,这个实用性不大,
    而且思想也不是很明确...
    最好是不要想太多.
      

  6.   


    vc和java编译器解析运算符计算稍有差别的
    上面的是vc的编译算法,就是从左到右的。
    而Java不同的。java是先将等号右边的执行完,返回个结果再赋给等号左边的如下i=(++i + ++i + ++i); 
    这样i=(1+2+3)=6;j=(j++ + j++ + j++ + j++); 这样j=(0+1+2+3)=6