应该是++i吧!
i++是先应用再增值,++i是先增值再运算

解决方案 »

  1.   

    ++i
    是可以得到4,但是这个那个java认证的题目呀.想不明白.
    可能与运算符结合方向和优先级有关.在c中这样写就是4.
      

  2.   

    i = i++; 这样的代码根本就是有问题的,如果我同事竟然这样写代码,我绝对要求他重写!i = i++; 在Java里面它会写保留i的原始值,然后i++,i→1,然后又变成了 i = 0;
    所以之后i = 0我还是那句话,这样的代码绝对是垃圾,绝对需要重写! 本来 i++已经明确功能了,还多了 i = 做什么!
      

  3.   

    只能说java和c对++的实现有很大的不同
    c里面i=i++ --> i=expression_val;(i=0) i=i+1;(i=1)
    i=++i; --> i=i+1;(i=1); i=expression_val; (i=1);
    java如果出现这样的问题
    那是java的实现问题,sun没有预计到中国人会考i=i++这样的问题
    所以没有作这方面的测试,留下了一个逻辑上的bug
      

  4.   

    TO:搂主,你说的那个问题是这样的,定义变量i并初始化它的时候,i为0,i++以后,i是为1,但i++本身还是为0,所以赋值给i以后,还是0,故最终i还是0。
    public class IncrementTesting {
        public static void main(String args[]) {
            int a = 0;
            System.out.println("value1 : " + a);
            System.out.println("value2 : " + a++);
            System.out.println("value3 : " + a);
        }
    }
    结果是
    value1 : 0
    value2 : 0
    value3 : 1
      

  5.   

    i++ 这是个单目运算,这个表达式的值就是返回i的值。而increment的操作也同时进行了,因为++的优先级高于=。而表达式i++又返回了i原来的值0(实际上此时的i应为1),这样执行赋值操作时,i又由1变成了0,后续表达式的亦同。