1. i = i++;是首先完成赋值后i再完成++运算,也就是说i = i++;首先就赋给了i=0了,再计算i++,这样一来,i的值就已经是0了.如果你科学稍稍修改一下
i = i++;
int b = i++;
这时打印的结果是b=0;i=1;2.你那个fermin()方法中运算的只是那个方法中的变量,而你打印的却是main()方法中变量,所以不会改变.以上是我的理解.

解决方案 »

  1.   

    第一个,有C的时候就搞过了。
    i=(i++);先执行i++;i++的值为0,0复制给i. i当然还是0第二个,是作用范围和形参和实参的问题。很搞不多说了,C里面也有相似的题目我不是牛,我只不过是个菜鸟。如果不对,请多多包涵
      

  2.   

    这跟C中是一样的,请楼主理解一下这个
    int i=0;
    (i++)+(i++)+(i++)
    还有这种
    (1==1)||(++i==2)是什么结果,i会变成什么?
      

  3.   

    第一个,有C的时候就搞过了。
    i=(i++);先执行i++;i++的值为0,0复制给i. i当然还是0
    ---------------------------------------------------
    i = i++;是先执行i++吗????++i才是先执行i++啊,是先执行赋值语句啊,是先将i=0赋给左边的i,再运算i++吧
      

  4.   

    我明白大家说的意思了,可是第一个中,先算的i=0,然后作i++,那i不是还应该变为1吗?为啥输出为0呢?????
      

  5.   

    ++优先级比等于号高.
    如果按你的思路 i=i++;<==>(i=i)++;  疑惑ing
      

  6.   

    by the way 前++后++优先级好像也是一样的
      

  7.   

    i++ 是先操作在赋值
    ++i 是先赋值在操作public class Inc{
    public static void main(String argv[]){
                    Inc inc = new Inc();
                    int i = 0;
    System.out.println(i++);
    i = 0;
    System.out.println(++i);
    }
            
    }结果应该是:
    0
    1
      

  8.   

    第1个类:
       对于i=++i ,JAVA和C的处理方法相同,都是先自加增1后再赋值,如果i等于5
    i=++i;之后,i等于6
       对于i=i++ ,JAVA和C的处理方法是不同的,C先把i的值作用于表达式,之后再自增,也就是
    如果i等于5,i=i++;C是先执行i=5,再执行 i++,最后i等于6
       但JAVA对于i=i++,是只执行 i=i,之后不再i++,因为等号左右变量相同,所以对于i等于5
    i=i++;之后i还是5;不过等号左右的变量不同时,处理方法和C是一样的,如果i等于5,
    j=i++;之后,j等于5,i变成6第2个类:
       inc.fermin(i);是把i的__值__作为参数(而不是地址)传递给了方法fermin(),无论fermin()内部如何操作,都不能对被传入的i(不在同一地址)造成改变,所以打印结果还是原来的i,(0)