当我执行代码时,它给出了13作为答案。请解释一下计算机如何得出答案。我想知道增量前后的优先级。
class demo
{
public static void main(String [] arg)
{
int i=2;
System.out.println(i++ + i + ++i + i++);
}
}
答案 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]
}