题目如下:

  1. int i = 1;
  2. int j = ++i + i++ + ++i + ++i + i++;

请问最后i是多少?j是多少?

解答思路

在Java中算数运算是从左到右的。上面的式子我们可以用序号分割成以下这样:

  1. int j = ++i(1) + i++(2) + ++i(3) + ++i(4) + i++(5)
  1. 此时i=1,++i=2,(1)的结果是2
  2. 此时i=2, ,所以2+2=4,然后i再加1得3. (1)+(2)的结果是4
  3. 此时i=3,所以(3)先计算++i的结果是4,所以(1)+(2)+(3)的结果是8.
  4. 此时i=4,(4)的结果为5,(1)+(2)+(3)+(4)=13.
  5. 此时i=5,(1)+(2)+(3)+(4)+(5)=18,i再自增1,i=6.

所以,最后i=6,j=18