繁体   English   中英

在条件语句中与 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");

因此,在考虑 output 时,我的思考过程是这样的:

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

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

但是当检查它时,11 是坏的,21 是好的

我在哪里想错了

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

在第二种情况下,您将 21(预递增)与 21(通过早期评估后递增)进行比较

您的想法很好,但是您没有考虑在 equals 条件下第二个 i/j 会发生什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM