int a=5,i;
i=++a + ++a + a++;
//this means i= 6+7+7=20 and when this result is stored in i,
//then last *a* will be incremented <br>
i=a++ + ++a + ++a;
//this means i= 5+7+8=20 (this could be complicated,
//but its working like this),<br>
a=++a + ++a + a++;
//as a is 6+7+7=20 (this is incremented like this)
14条答案
按热度按时间qaxu7uf21#
这有用吗?
主要的一点是
++a
递增该值并立即返回它。a++
也会增加值(在后台),但会返回未更改的变量值-看起来它会在以后执行。vlju58qv2#
++a
递增,然后使用变量。a++
使用并递增变量。如果你有
你呢
codaddict解释了您的特定片段。
nbewdwxp3#
在这两种情况下,它首先计算值,但在增量后,它保留旧值,并在计算后返回
a
a=a+1;
返回a;
a
温度=a;
a=a+1;
返回温度;
iecba09b4#
是
工作:增量a至6(当前值6)+增量a至7(当前值7)。现在求和为13,将其与a(=7)的当前值相加,然后将a增加到8。求和为20,赋值完成后a的值为8。
是
工作:a的起始值为5。在加法中使用它,然后将其增加到6(当前值6)。将a从当前值6递增到7,以获得另一个+操作数。总和是12,a的当前值是7。下一步将a从7增加到8(当前值=8),并将其与前一个总和12相加,得到20。
ubbxdtey5#
++a
增量a
在评估之前。a++
评估a
然后增加它。与您给出的表达式相关:
我上面使用的parentese是java隐式使用的。如果你用这种方式看这些术语,你可以很容易地看到,它们都是相同的,因为它们是可交换的。
gcxthw6b6#
在上面的例子中
ctzwtxfj7#
是前缀增量运算符:
首先计算并存储结果,
然后使用变量。
a是后缀增量运算符:
首先使用变量,
然后计算并存储结果。
一旦你记住了规则,ez会让你计算一切!
ttp71kqs8#
但是,我相信,如果您将所有语句组合在一起,并在Java8.1中运行它,您将得到不同的答案,至少我的经验是这样说的。
代码的工作方式如下:
ttcibm8c9#
假设你是说
其结果是:
所以i是6+7+7=20,所以20被打印出来。
所以我是5+7+8=20,所以20被再次打印。
在评估所有右侧后(包括将a设置为8),然后将a设置为6+7+7=20,因此最后一次打印20。
5gfr0r5j10#
什么时候
a
那是五点a++
为表达式和增量指定5a
后来++a
增量a
在将数字传递给表达式(该表达式给出a
6)在本例中的表达式)。那么你算
olqngx5911#
pre increment表示变量在表达式中求值之前先递增。后增量是指变量在表达式中使用时经过求值后递增。
因此,仔细看,你会发现这三个赋值在算术上是等价的。
kuarbcqp12#
如果不在表达式中,则增量前和增量后是等效的
vc6uscn913#
是
工作:前置/后置增量具有“从右到左”的关联性,并且前置优先于后置,因此首先将前置增量作为
(++a + ++a) => 7 + 6
. 然后a=7
提供给后增量=>7 + 6 + 7 =20
及a =8
.是
工作:前置/后置增量具有“从右到左”的关联性,并且前置优先于后置,因此首先将前置增量作为
(++a + ++a) => 7 + 6
.那么a=7
提供给后增量=>7 + 7 + 6 =20
及a =8
.hc2pp10m14#
我相信你执行这些陈述的方式不同
一起执行将导致=>38,29