与条件语句中 Java 中的递增运算符混淆

Confusion with increment operators in Java in conditional statements

int i = 10;
if(i++ == i)
System.out.println(i + " is good");
else
System.out.println(i + " is bad");

int j = 20;
if(++j == j)
System.out.println(j + " is good");
else
System.out.println(j + " is bad");

所以在考虑输出时,我的思考过程是这样的:

对于第一个 if 条件,我认为由于其 post 递增运算符,i 值将首先使用然后递增,因此它将执行 if 条件并递增 i 的值,因此打印输出 11 是好

对于第二个 if 条件,我认为自从 tis pre increment 运算符以来,i 值将首先增加然后使用,因此 else 条件将执行,因此打印 21 是错误的。

但是检查时发现 11 不好,21 好

我哪里想错了

在第一种情况下,您将 10(尚未递增)与 11(在评估第一个 i++ 时已经 post 递增)进行比较

在第二种情况下,您将 21(预递增)与 21(post-由先前评估递增)进行比较

你的想法很好,但是你没有考虑第二个 i/j 在 equals 条件下发生的事情