2013-01-24 89 views
-10

请看一看代码的小片段:递增和递减操作confution在JAVA

int e = 20; 
System.out.println(e++*e--*++e*e); 

谁能解释的输出吗?

其实我想问一下前后增量/减量是如何在这里工作的?

谢谢。

+1

我建议你尽量自己解决,否则你会认为没有理智的人会写出这样的东西,因为它很混乱。 –

+0

[Explain this behavour]的可能重复(http://stackoverflow.com/questions/4227963/explain-this-behavour) –

+0

为什么你要使用这个。???噢,我想让其他程序员或老师混淆。 – Arpit

回答

3

打破表达e++*e--*++e*e

  • Ë++是一个后增量运算符(将分配e的值,然后递增e的值和)的值将是20个大气压和以后将INC
  • e--是一个后分解运算符(将分配值给e然后递减e的值)当前在最后一步递增的e值为21因此(20 * 21)
  • ++ e是预增加运算符(将增加e的值,然后将增量值赋给e)现在为21,因此(20 * 21 * 21)
  • Ë最后(20 * 21 * 21 * 21)

最终输出:

185220 
1

最简单的方法是考虑在临时变量而言,从左至右依次为:

e = 20; 
a = e++; //a = 20/e = 21 
b = e--; //b = 21/e = 20 
c = ++e; //c = 21/e = 21 
d = e; //d = 21 

result = a * b * c * d; //20 * 21 * 21 * 21 = 185,220