gpt4 book ai didi

java - x=20;x=++x+++x + x++ ;java中x的最终值为65

转载 作者:行者123 更新时间:2023-12-01 18:42:49 29 4
gpt4 key购买 nike

这怎么可能,因为后增量运算符应该将 x 增加到 66?

当我对y= ++x + ++x + x++;做同样的事情时它给 y 的值是 65 23 为 x .

那么让我知道 java 编译器是如何解决这些表达式的。

最佳答案

让 Java 告诉你。 javap -c MyClass 显示字节码:

  public static void main(java.lang.String[]);
Code:
0: bipush 20
2: istore_1
3: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
6: iinc 1, 1
9: iload_1
10: iinc 1, 1
13: iload_1
14: iadd
15: iload_1
16: iinc 1, 1
19: iadd
20: dup
21: istore_1
22: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
25: return

如果你仔细想想,结果是完全合乎逻辑的:你有两个前置增量和一个后置增量。因此,您的代码已生效:

y = 0

x++ // 21
y += x

x++ // 22
y += x

y += x // (still 22!)
x++ // 23

x = y // (21 + 22 + 22 at this point)

关于java - x=20;x=++x+++x + x++ ;java中x的最终值为65,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216118/

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