前缀和后缀的语义++&引用;Java中的运算符
我想知道为什么这段代码会给出输出前缀和后缀的语义++&引用;Java中的运算符,java,post-increment,pre-increment,Java,Post Increment,Pre Increment,我想知道为什么这段代码会给出输出112 最后一个数字2是如何产生的 public static void main(String[] args) { int i = 0; System.out.print(++i); System.out.print(i++); System.out.print(i); 为什么会发生这种情况?i++是后增量运算符,它的表达式值为i的旧值,但会产生递增i的副作用。值是1,但它会将i更改为2i最初为0,然后对其进行预增量并打印,这样
112
最后一个数字
2
是如何产生的
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会发生这种情况?
i++
是后增量运算符,它的表达式值为i
的旧值,但会产生递增i
的副作用。值是1
,但它会将i
更改为2i最初为0,然后对其进行预增量并打印,这样您就有了第一个1,然后再次打印它,第二个1,然后再进行后增量,最后一次打印,最后一次打印,您就有了2您的代码片段,它被翻译为
int i = 0;
i = i + 1; // 1
System.out.print(i); // 1
System.out.print(i); // 1
i = i + 1; // 2
System.out.print(i); // 2
这就是为什么最终结果是2
++i
它在被print方法调用之前递增变量,i++
它在方法执行之后递增变量。您正在对i
应用两个递增。初始值为0,因此经过两次增量(++i
和i++
)后,它将变为2
i++
和++i
都将i
的值增加一
它们类似于
i = i+1;
但是,++i
首先增加i
的值,然后使用它,因此0
变成1
并打印出来,而i++
首先使用值,然后增加i
的值,因此打印的值是1
,然后变成2
,因此是最后一位(i的最终值是2。简单地说
在增量后处理中,增量是在读取变量后进行的
在预增量中,变量值首先递增,然后在表达式中使用。当我们使用后增量或预增量运算符时,它会增加值
增量后运算符(i++
)先赋值,然后递增。增量前运算符(++i
)先递增,然后赋值。
它们的行为都是这样的:
int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1
运行此代码时:
public static void main(String[] args) {
int i = 0; //i=0;
System.out.print(++i); // increments i to i=1, and prints i
System.out.print(i++); // prints i and then increments it to i=2
System.out.print(i); // prints i, i.e. 2
}
这与迭代无关。++i
表示增量和读取i
,i++
表示读取和增量i
,而i
表示读取i
。作为一般规则,不要这样做,否则会导致无法读取代码、增量和单独使用值