我运行了以下代码段
int n=0;
for(int m=0;m<5;m++){
n=n++;
System.out.print(n)}
当我预期01234时,我得到输出为00000.有人可以解释为什么
提前致谢
答案 0 :(得分:4)
n = n++
增加n
,然后将n
设置为增加它之前的值。使用:
n++;
或
n = n + 1;
但不要试图同时做两件事。它不起作用。
答案 1 :(得分:3)
n=n++;
应该只是n++;
或n=n+1;
(如果需要,甚至是n=++n;
)
n++
执行增量,但会在增量发生之前返回n
的值。因此,在这种情况下,您正在递增n
,但随后将n
设置为增量发生前的值,实际上意味着n
不会发生变化。
++
运算符可以用作前缀或后缀。在后缀形式(n++
)中,表达式的计算结果为n
,但在前缀情况(++n
)中,表达式将计算为n+1
。仅仅使用它们就会产生相同的结果,因为n
的值会增加1。
答案 2 :(得分:1)
当你有一个++时,运算符可以在变量之前或之后。同样,添加将在执行操作数之前或之后发生。如果该行已阅读:
n = ++n;
然后它会完成你期望它做的事情。
答案 3 :(得分:0)
n = ++n;
也可以工作:-)但是为自己分配一个变量是没用的。要增加n,只需使用
n++;
或
++n;
答案 4 :(得分:0)
Java在后续增量中使用下一个实例中变量的值。
在代码片段中,循环执行第一次获取n = 0并在操作数处递增。但是增加的值将反映在下一次出现的n而不是当前赋值中,因此0将再次设置为n。我认为这是因为n = n ++是ATOMIC操作。
所以n总是设为0。
要避免这种情况,要么预先递增[++ n]或+1 [n + 1],您的参考会立即更新。
希望这能回答你的问题。
答案 5 :(得分:0)
由于之前似乎没有提及,您也可以使用
n += 1;
如果你真的喜欢任务操作员。