2010-08-06 127 views

回答

7

这是一个按位“或”加上赋值,所以你在你的假设中是非常正确的。

+0

这是正确的+1 – 2010-08-06 04:08:45

3

更正确,X | = Y实际计算为X = X | (Y)。

这是一个有趣的例子,为什么这很重要。

int c = 2; 
c %= c++ * ++c; 

这里的有趣的结果是,它会被写成

c = c % (c++ * ++c); 

Java规范告诉我们,JVM会先看到初始c和存储,任何在它之前将有没有影响它,因此C++ & ++ c实际上不会影响计算的结果。它总是c = 2%,这等于2 :)

+0

+1好的角落案例! – fortran 2010-08-06 09:46:50