解释Java一元运算符

Rej*_*eji 1 java

请检查此代码:

int result = 0;
result = result++;
System.out.println("Result 1 = " + result);
result++;
System.out.println("Result 2 = " + result);
Run Code Online (Sandbox Code Playgroud)

我期待的输出是:

Result 1 = 1
Result 2 = 2
Run Code Online (Sandbox Code Playgroud)

但我得到了输出:

Result 1 = 0
Result 2 = 1
Run Code Online (Sandbox Code Playgroud)

问题在于Line2.有人能解释一元算子吗?

Mil*_*les 6

在声明中i = i++:

这是一种保证行为.i读取值是为了评估赋值的右侧.i然后递增.语句结束导致评估结果被分配给i.

有两个分配,i = i++;最后一个要确定结果.要执行的最后一个将始终是语句级别分配而不是增量器/减量器.

编写代码的可怕方式,但至少你有一个确定性的结果.

http://forums.sun.com/thread.jspa?threadID=318496