无法用java完成此分配
有人能解释为什么会这样吗无法用java完成此分配,java,Java,有人能解释为什么会这样吗 int i=0; i=i++; i=i++; i=i++; System.out.println(i); 它打印零。i++是后增量()。它递增i,但表达式的结果是递增前i的值。将此值赋回到i实际上保持i的值不变 把它分解成这样: int i = 0; int j = i++; 在这种情况下,很容易理解为什么j==0。现在,我们用i代替j。右边的值仍然是0,这就是为什么在代码段中得到i==0。您的意思是: int i = 0; i++; i++; i++; Syste
int i=0;
i=i++;
i=i++;
i=i++;
System.out.println(i);
它打印零。
i++
是后增量()。它递增i
,但表达式的结果是递增前i
的值。将此值赋回到i
实际上保持i
的值不变
把它分解成这样:
int i = 0;
int j = i++;
在这种情况下,很容易理解为什么j==0
。现在,我们用i
代替j
。右边的值仍然是0
,这就是为什么在代码段中得到i==0
。您的意思是:
int i = 0;
i++;
i++;
i++;
System.out.println(i);
i++
实际上是做作业的,所以如果你添加一个=
你只会把事情搞混。这些其他优秀的响应者可以为您提供细节,我无法理解其中的一些细节。:) 首先,你不应该写这种代码
但是,如果我们考虑问题,那么这个简单:它与后缀操作符“返回”值的方式有关。后缀的优先级高于赋值运算符,但将i的值递增后的后缀运算符返回先前的i值。所以我又被赋予了它以前的值
再一次不要在你的代码中使用这个结构,因为下一个程序员看到这个结构会在你之后出现(手里拿着一些大东西):让
I=++
,增加,和A=I
,分配。它们是非交换的:IA!=AI
摘要
IA=“先增加后分配”
AI=“先分配后增加”
反例
$ javac Increment.java
$ java Increment
3
$ cat Increment.java
import java.util.*;
import java.io.*;
public class Increment {
public static void main(String[] args) {
int i=0;
i=++i;
i=++i;
i=++i;
System.out.println(i);
}
}
相关的