你能给我解释一下这段Java代码的输出吗?
int a=5,i;
i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;
System.out.println(a);
System.out.println(i);
两种情况下的输出都是20
发布于 2010-03-03 20:25:44
这有帮助吗?
a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)
要点是++a
递增该值并立即返回它。
a++
还会递增该值(在后台),但返回未更改的变量值-它看起来像是稍后执行的值。
发布于 2010-03-03 20:27:36
++a
递增,然后使用变量。
a++
使用变量,然后递增该变量。
如果你有
a = 1;
而你确实做到了
System.out.println(a++); //You will see 1
//Now a is 2
System.out.println(++a); //You will see 3
codaddict explains您的特定代码片段。
发布于 2010-03-03 20:24:27
在对a
求值之前,++a
会递增它。a++
对a
求值,然后递增它。
与您给定的表达式相关:
i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end
我上面使用的父类是由Java隐式使用的。如果你这样看这些术语,你可以很容易地看到,它们都是相同的,因为它们是可交换的。
https://stackoverflow.com/questions/2371118
复制相似问题