【发布时间】:2011-06-10 17:09:34
【问题描述】:
我正在阅读官方 Java 教程,但我不明白后缀和前缀之间的区别(++x 与 x++)。谁能解释一下?
【问题讨论】:
-
接受的答案没有解释,他只是发布了一个例子(我在创建主题之前看到了那个帖子)。乔恩的解释帮助我理解了。
标签: java
我正在阅读官方 Java 教程,但我不明白后缀和前缀之间的区别(++x 与 x++)。谁能解释一下?
【问题讨论】:
标签: java
好吧,你得到了足够的答案,我只是让你担心......后增量和前增量运算符都会混淆代码,所以有时最好只使用 x+1 然后你和其他人肯定知道那里发生了什么。一些例子:
int x = 5;
x = ++x;
System.out.println( x ); // prints 6
x = x++;
System.out.println( x ); // prints 6!
x = ++x + x++;
System.out.println( x ); // prints 14!
最后两次递增可能是调试问题的根源(在我的生活中看过几次......)。 x = x++ - 在递增之前对其进行评估...所以要小心!
【讨论】:
x = ++x+++++x++,一开始就知道x = 1,执行该语句后x的值是多少(如果编译,如果不解释原因)。
基本上,++x 在 x 被评估之前给 x 加 1,而 x++ 在之后加 1。如果您将其用作参数,这是有道理的。
让我们从 x 开始
int x = 3;
如果我们使用中缀运算符在 x 上调用 System.out.println:
System.out.println(++x);
x 将首先增加到 4,println 将输出“4”。如果我们这样做几乎是一样的:
x+=1;
System.out.println(x);
让我们再次假设 x 等于 3。如果我们使用后缀运算符在 x 上调用 System.out.println:
System.out.println(x++);
它会先输出x的当前值,“3”,然后增加x。就像这样:
System.out.println(x);
x+=1;
希望对您有所帮助。
【讨论】:
++x 是预递增的,x++ 是后递增的。后递增值在评估后增加,而预递增值在评估之前增加。
【讨论】:
好吧,单独站立也是一样的。但是,如果涉及其他操作数 - ++x 将推进 x 然后应用其他操作数,x++ 将先使用 x 然后推进它。
【讨论】:
++x 递增 x 然后返回值 x++ 返回 x 的值,然后递增变量
例如:
int x = 0;
int A = ++x; // A = 1
int B = x++; // B = 1
int C = x; // C = 2
【讨论】:
++x:递增x;整体表达式的值是之后增量
x++:递增x;整个表达式的值是 before 增量
考虑以下两个部分:
int x = 0;
System.out.println(x++); // Prints 0
// x is now 1
int y = 0;
System.out.println(++y); // Prints 1
// y is now 1
我个人尽量避免将它们用作较大语句中的表达式 - 我更喜欢独立代码,如下所示:
int x = 0;
System.out.println(x); // Prints 0
x++;
// x is now 1
int y = 0;
y++;
System.out.println(y); // Prints 1
// y is now 1
这里相信大家不用摸不着头脑,就能算出打印出来的内容和x和y的最终值了。
在表达式中使用前/后增量肯定是有用的,但首先要考虑可读性。
【讨论】: