gpt4 book ai didi

java - 后缀一元运算符到底什么时候发生?

转载 作者:行者123 更新时间:2023-11-29 04:45:26 25 4
gpt4 key购买 nike

我读了一些关于一元运算符的帖子: What is the Difference between postfix and unary and additive in java "C - C++" joke about postfix/prefix operation ordering

还有一些。

但是,当值发生变化时,我仍然确切地不明白。

例如:

int x = 1;
x = x++;
System.out.print("x = x++ ==> ");
System.out.print(" x = " + x);
System.out.println();

int x = 1;
x = x++ + x++;
System.out.print("x = x++ + x++ ==> ");
System.out.print(" x = " + x);
System.out.println();

输出是:

x = x++ ==>  x = 1
x = x++ + x++ ==> x = 3

因此在第一个 block 中,x 被分配给 x 并随后递增,但该值从未被使用,否则输出将是 x = 2

在第二个 block 中,如果我理解正确的话,第一个 x++ 在赋值之前求值,第二个 x++ 在赋值之后求值但从未使用过。

如果在第二个 block 中,两个 x++ 都在赋值后计算但从未使用过,则输出将为 x = 2。如果两者都被使用,输出将是 x = 4

我的 IDE 还指示使用了第一个 x++,但没有使用第二个: enter image description here

总而言之 - 我仍然对何时以及如何确切地完成增量感到困惑。

最佳答案

在线

x = x++ + x++;

假设 x = 1,第一个 x++ 返回“1”作为值,然后它递增 x 到 2。所以基本上,它将旧值分配回 x

第二个x++做同样的事情;它返回 x 的值,现在是 2,然后才将其值递增到 3 - 该值未被使用。

你的代码等同于:

tmp = x;
x = x + 1;

tmp2 = x;
x = x + 1; // not used

x = tmp + tmp2;

可能对您有帮助的链接:

关于java - 后缀一元运算符到底什么时候发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385528/

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