Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;价值++&引用;在爪哇_Java_Syntax - Fatal编程技术网

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)的作业。

非常确定这是一个五分之一复杂的任务。搜索增量后和增量前。非常确定这是五分之一的副本。搜索增量后和增量前。