Java &引用;价值++&引用;在爪哇
可能重复:Java &引用;价值++&引用;在爪哇,java,syntax,Java,Syntax,可能重复: 为什么输出是5而不是6 请不要告诉我怎样做才能得到6。。显然,我可以得到6,只是语法对我来说很好,解释一下它的错误会更好,谢谢 您的线路: nir = nir++; 表示“将nir(5)的值分配给变量nir,然后将该值增加1。此增量操作在过程中丢失。因为nir被覆盖 你想要: nir++; 或 如果你有 int a = 5; int b = a++; a将设置为6,b将设置为5。您的线路: nir = nir++; 表示“将nir(5)的值分配给变量nir,然后将该值增加1
为什么输出是5而不是6 请不要告诉我怎样做才能得到6。。显然,我可以得到6,只是语法对我来说很好,解释一下它的错误会更好,谢谢 您的线路:
nir = nir++;
表示“将nir(5)的值分配给变量nir,然后将该值增加1。此增量操作在过程中丢失。因为nir被覆盖
你想要:
nir++;
或
如果你有
int a = 5;
int b = a++;
a
将设置为6,b
将设置为5。您的线路:
nir = nir++;
表示“将nir(5)的值分配给变量nir,然后将该值增加1。此增量操作在此过程中丢失。因为nir被覆盖了
你想要:
nir++;
或
如果你有
int a = 5;
int b = a++;
a
将设置为6,而b
将设置为5。因为表达式nir++
的计算结果为nir
的旧值。因此exp(nir++)
相当于:
int oldValue = nir;
nir = nir + 1;
exp(oldValue);
在您的情况下,这意味着:
int oldValue = nir;
nir = nir + 1;
nir = oldValue;
这当然毫无意义,因为它基本上什么都不做。因为表达式
nir++
的计算结果是旧值nir
。因此exp(nir++)
相当于:
int oldValue = nir;
nir = nir + 1;
exp(oldValue);
在您的情况下,这意味着:
int oldValue = nir;
nir = nir + 1;
nir = oldValue;
这当然毫无意义,因为它基本上什么都不做。因为nir++在递增之前得到nir的值,如果你想让值为6,请使用++nir,它在给出值之前说明递增nir。因为nir++在递增之前得到nir的值,如果你想让值为6,请使用++nir,它表示在给出值之前增加nir。
nir++
返回nir
值,然后增加值。因此nir++
当nir
相等时5
返回5
并将nir
设置为6
。之后,您将nir
设置为5
,因此它返回5
。只需跳过nir=
或使用++nir
nir++
返回nir
值,然后增加它。因此nir++
当nir
相等时5
返回5
并将nir
设置为6
。之后,您将nir
设置为5
,因此它返回5
。只需跳过nir=
或使用++nir
尝试nir=++nir;这将是不同的。
它将首先+1,然后将值设置为nir 尝试nir=++nir;这将是不同的。
它将首先+1,然后将值设置为nir 您不必使用
++
增量重新分配变量
nir++
是后增量:首先将变量用于表达式中,然后对其进行增量。因此,这里您将值5分配给nir
如果希望增加值然后使用,则可以使用预增量
++nir
您不必使用++
增量重新分配变量
nir++
是后增量:首先将变量用于表达式中,然后对其进行增量。因此,这里您将值5分配给nir
如果希望增加值然后使用,可以使用预增量++nir
,如下所示:
int nir = 5;
nir设置为5
将右侧替换为nir的当前值,然后对nir++进行求值。 换言之:
nir = nir++;
//simplifies to (not executed!)
nir = nir;
//simplifies to (not executed!)
nir = 5;
接下来执行nir++
。nir现在是6
下一步nir=5代码>被执行。nir现在是5这就是发生的情况:
int nir = 5;
nir设置为5
将右侧替换为nir的当前值,然后对nir++进行求值。
换言之:
nir = nir++;
//simplifies to (not executed!)
nir = nir;
//simplifies to (not executed!)
nir = 5;
接下来执行nir++
。nir现在是6
下一步nir=5代码>被执行。nir现在是5我有点惊讶地发现,除了解释问题之外,没有人建议使用另一种更不晦涩的操作符,至少对我来说是这样——尽管我已经从事C和/或Java 30多年了:
nir += 1;
这一点的好处是,它看起来更像它(或++nir)的赋值。我有点惊讶地发现,除了解释问题之外,没有人(至少对我来说)建议使用另一个不那么晦涩的操作符——尽管我已经做了30多年的C和/或Java:
nir += 1;
这一点的好处是,它看起来更像它(或++nir)的作业。非常确定这是一个五分之一复杂的任务。搜索增量后和增量前。非常确定这是五分之一的副本。搜索增量后和增量前。