Java 增量运算符功能。它是如何工作的?

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

有人能告诉我为什么这个代码会导致1吗

我认为应该发生的是,myInt被10修改,结果是1,然后myInt递增,应该变成2。然而,似乎增量被丢弃了

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++”是一个后增量操作符。 因此,在递增之前返回原始值

因此,在你的情况下:

  • myInt++返回21
  • myInt++是进程,myInt现在等于22
  • 21%10被处理并分配给myInt,myInt等于1

  • 我不知道你在找什么样的答案。你的直觉是错误的,事实上,增量首先发生,然后是赋值。您刚刚验证了这一点。至少在C中,
    +++a+++a++
    将是未定义的行为。这在Java中是怎样的?@FelixKling它在Java中不是未定义的。()@FelixKling-它在java中工作。@Ismail:但这并没有给出关于这些运算符的明确答案(至少我看不到)。但是在浏览了一些关于SO的问题之后,似乎行为确实被定义了。@vinaykumar:它在C中也“工作”,但实际结果可能因机器而异。
    int myInt = 21;
    
    myInt = ++myInt % 10;
    
    System.out.println( "myInt: " + myInt );