Java 增量运算符功能。它是如何工作的?
有人能告诉我为什么这个代码会导致1吗 我认为应该发生的是,myInt被10修改,结果是1,然后myInt递增,应该变成2。然而,似乎增量被丢弃了Java 增量运算符功能。它是如何工作的?,java,Java,有人能告诉我为什么这个代码会导致1吗 我认为应该发生的是,myInt被10修改,结果是1,然后myInt递增,应该变成2。然而,似乎增量被丢弃了 int myInt = 21; myInt = myInt++ % 10; System.out.println( "myInt: " + myInt ); 我认为最好通过例子来解释,而不是从理论上 有两种类型的增量 a++(增量后) ++a(增薪前) 谷歌搜索后增量和预增量之间的差异 这对你的案子有效 int myInt = 21; myIn
int myInt = 21;
myInt = myInt++ % 10;
System.out.println( "myInt: " + myInt );
我认为最好通过例子来解释,而不是从理论上 有两种类型的增量 a++(增量后) ++a(增薪前)
谷歌搜索后增量和预增量之间的差异 这对你的案子有效
int myInt = 21;
myInt = ++myInt % 10;
System.out.println( "myInt: " + myInt );
我相信操作符“variable++”是一个后增量操作符。
因此,在递增之前返回原始值
因此,在你的情况下:
我不知道你在找什么样的答案。你的直觉是错误的,事实上,增量首先发生,然后是赋值。您刚刚验证了这一点。至少在C中,
+++a+++a++
将是未定义的行为。这在Java中是怎样的?@FelixKling它在Java中不是未定义的。()@FelixKling-它在java中工作。@Ismail:但这并没有给出关于这些运算符的明确答案(至少我看不到)。但是在浏览了一些关于SO的问题之后,似乎行为确实被定义了。@vinaykumar:它在C中也“工作”,但实际结果可能因机器而异。
int myInt = 21;
myInt = ++myInt % 10;
System.out.println( "myInt: " + myInt );