请评估以下声明(与增量和预增量相关)

时间:2014-05-27 16:28:30

标签: java

当我执行代码时,它给出了13作为答案。请解释一下计算机如何得出答案。我想知道增量前后的优先级。

class demo
{
public static void main(String [] arg)
     {
      int i=2;
      System.out.println(i++ + i + ++i + i++);
     }
}

3 个答案:

答案 0 :(得分:3)

我认为运营商优先权不是真正的问题;似乎有明确的操作顺序。从左到右移动:

(i++) + i + (++i) + (i++)

  2   + 3 +   4   +   4   = 13

++i意味着我在读取其值之前会增加 i++表示我应先读取然后递增。

注意:增量运算符的优先级高于加法运算符。 (根据评论)这里是一个很好的reference

答案 1 :(得分:0)

i++表示i在“使用”后递增,而++i表示在“使用”之前i递增 因此你的表达是:
  2(按原样拍摄并随后增加)
+ 3(取增量i,完全不改变)
+ 4(在服用前增加i)
+ 4(按原样拍摄并随后增加)
= 13(我现在是5)

答案 2 :(得分:0)

public static void main(final String[] args) {
    int i = 2;
    // System.out.println(i++ + i + ++i + i++);
    int temp;

    temp = i++;
    System.out.println(temp); // 2 since [temp = 2] [i = 3]
    temp = i;
    System.out.println(temp); // 3 since [temp = 3] [i = 3]
    temp = ++i;
    System.out.println(temp); // 4 since [temp = 4] [i = 4]
    temp = i++;
    System.out.println(temp); // 4 since [temp = 4] [i = 5]
}