前缀和后缀增量

Pre and Postfix Increment

提问人:Emily Watson 提问时间:1/31/2021 最后编辑:user207421Emily Watson 更新时间:4/12/2023 访问量:112

问:

a = 1;
int a2 = a++;
System.out.println("----------Test 3 ----------");
System.out.println("The value of a is " + a);
System.out.println("The value of a2 is " + a2);
System.out.println("The value of a2 is " + a2);

其结果是:

----------测试 3 ----------

a 的值为 3

a2 的值为 2

a2 的值为 2

我不明白为什么在第二个输出后 的值没有增加。偶数使用后缀增量增加并分配给 。请向我解释一下。a2aa2

java 后缀运算符 prefix-operator

评论


答:

1赞 Peter Knall 1/31/2021 #1

前缀和后缀递增仅在您正在执行的语句中起作用。尝试在 print 语句中添加前缀和后缀增量。

1赞 ΦXocę 웃 Пepeúpa ツ 1/31/2021 #2

这就是 Post Increment 运算符的设计工作方式......

行为

int a2 = a++;

相当于做

int a2 = a;
a = a + 1;

因此,您的代码正在生成以下输出:

----------Test 3 ----------
The value of a is 2
The value of a2 is 1
The value of a2 is 1
2赞 dreamcrash 1/31/2021 #3

我不明白为什么 a2 的值在 第二个输出甚至 A 使用后缀增量增加并分配 至 A2。

让我们一步一步来:

a = 1

将变量设置为 1;现在:a

int a2 = a++;

将等同于:

int a2 = a;
a++;

首先分配,然后递增,因此输出:

The value of a is 2
The value of a2 is 1
The value of a2 is 1

和名称 POSTFIX 增量。

对于您要改用的行为,即:++a

int a = 1;
int a2 = ++a;
System.out.println("The value of a is " + a);
System.out.println("The value of a2 is " + a2);
System.out.println("The value of a2 is " + a2);

输出:

The value of a is 2
The value of a2 is 2
The value of a2 is 2

在这种情况下:

int a2 = ++a;相当于:

 a++;
 int a2 = a;