Оператор пост- и преинкремента OCJA-1.8

Я практикую операторы java post и pre increment, где у меня есть путаница, чтобы понять вывод программы ниже. Как он сгенерировал вывод как «8»?

public class Test{

public static void main(String [] args){
    int x=0;
    x=++x + x++ + x++ + ++x;
    System.out.println(x);
   }    
}

Я попробовал еще несколько примеров программ, в которых я могу отслеживать результаты.

public class Test{
 public static void main(String [] args){
    int x=0;
    x=++x + ++x + ++x + x++;
    //  1 + 2 + 3 + 3 =>9
    System.out.println(x);
  } 
}

person Gaurav    schedule 06.11.2017    source источник
comment
Возможный дубликат: stackoverflow .com/questions/28829957/   -  person assylias    schedule 06.11.2017


Ответы (2)


Возможно, это будет то же самое, что и следующее:

public static void main(String[] args) {
    int x=0;
    int t1 = ++x;
    System.out.println(t1);//t1 = 1 and x = 1
    int t2 = x++;
    System.out.println(t2);//t2 = 1 and x = 2
    int t3 = x++;
    System.out.println(t3);//t3 = 2 and x = 3
    int t4 = ++x;
    System.out.println(t4);//t4 = 4 and x = 4

    x= t1 + t2 + t3 + t4;//x = 1 + 1 + 2 + 4
    System.out.println(x);//8
}
person Rodolfo Forte    schedule 06.11.2017

Это может помочь понять поведение до и после оператора.

 public class Test{

    public static void main(String [] args){
        int x=0;
        x =   ++x   +  x++   +      x++  +     ++ x;
      //0 = (+1+0)  + (1)    + (+1 +1)   + (+1 +1 +2);
      //0  = 1      + 1      +  2      +  4
         System.out.println(x); // prints 8.
       }    
    }
person Ranjit    schedule 07.11.2017