gpt4 book ai didi

java - 如何在 if 条件下递增和递减

转载 作者:行者123 更新时间:2023-12-01 23:07:23 28 4
gpt4 key购买 nike

我有这个代码:

class Example {
public static void main(String args[]) {
int x = 99;

if (x++ == x) {
System.out.println("x++==x : " + x);
}

if (++x == x ) {
System.out.println("++x==x : " + x); // ++x == x : 101
}

if (x == x++) {
System.out.println("x==x++ : " + x); //x==x++ : 102
}

if (x == ++x) {
System.out.println("x==++x : " + x);
}

if (++x == ++x) {
System.out.println("++x==++x : " + x);
}

if (x++ == x++) {
System.out.println("x++==x++ : " + x);
}

if (++x == x++) {
System.out.println("++x==x++ : " + x); // ++x==x++ : 109
}
}
}

这是输出 -->

++x==x : 101
x==x++ : 102
++x==x++ : 109

我想弄清楚 java 编译器是如何处理这段代码的。我可以弄清楚它是如何得出这部分输出的:

++x==x : 101
x==x++ : 102

但是我无法处理这部分输出:

++x==x++ : 109

这段代码是如何工作的?最重要的是最后的输出是如何工作的?

最佳答案

您只需要知道 3 件事并使用逻辑将它们组合在一起:

  1. x++ 表示:“递增 x,但表达式的值是递增之前 x 的值”。
  2. ++x 表示:“递增 x,表达式的值是 您递增后 x 的值”。
  3. 对于 == 运算符,事情从左到右解析。所以,java“解析”左边的东西,然后是右边的东西,然后进行计算。

因此,给定:++x==x++,假设 x 以 107 开头。让我们分解一下:

  1. 首先解析左边,即++x。为此,请递增(x 现在为 108),然后将表达式解析为 递增后的值。所以,左边是 108
  2. 接下来解析右侧,即x++。为此,递增(x 现在为 109),然后将表达式解析为递增之前 的值。所以,右边是 108
  3. 现在做手术。 108 == 108。那是 true,所以如果“通过”,结果就会被打印出来。鉴于 x 现在是 109,它会打印“++x==x++ : 109”。

这正是它的作用。

关于java - 如何在 if 条件下递增和递减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70615885/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com