这个问题已经在这里有一个答案:
- 什么是“X = X +”后,X? 17个回答
我有小doubt.why下面的代码是印刷值i = 2。
int i=2;
i=i++;
System.out.println(i);
可有人请解释我什么是无在线2发生。
所以没有意义在这里在这里做++的?
谢谢
这个问题已经在这里有一个答案:
我有小doubt.why下面的代码是印刷值i = 2。
int i=2;
i=i++;
System.out.println(i);
可有人请解释我什么是无在线2发生。
所以没有意义在这里在这里做++的?
谢谢
i=i++;
因为第一次的分配情况,那么增量适用。
就像是:
第一i-得到2,然后++操作发生,但是结果将不被重新分配到I,所以i的值将保持为2。
i = i++;
第一评估i++
表达,从而增加i
并评估它的值i
之前增量。 既然你立刻分配给i
这个值,它重置的价值i
这样的增量似乎永远不会发生。 i = ++i;
会导致其他行为。
当你告诉i=i++;
你是在告诉电脑我分配给我,在那之后,我递增的价值,但它不会影响到我,因为我的价值是2。
正确的方法做到这一点应该是i=++i;
这意味着,它分配给我之前加1,我,或者你可以简单地使用i++;
感谢所有帮助我理解这是很有价值的东西。
我在什么地方找到不错的职位上这一点。
我从只计算器论坛给出的建议的答案,但有一些明确的解释失去了什么,我觉得。
Miljen Mikic建议链路不工作,说找不到网页。
下面的问题给出一些明确的解释是
int a=2, b=2;
int c = a++/b++;
System.out.println(c);
拆卸以下内容。
0:iconst_2 ; [I]Push the constant 2 on the stack[/I]
1:istore_1 ; [I]Pop the stack into local variable 1 (a)[/I]
2:iconst_2 ; [I]Push the constant 2 on the stack, again[/I]
3:istore_2 ; [I]Pop the stack into local variable 2 (b)[/I]
4:iload_1 ; [I]Push the value of a on the stack[/I]
5:iinc1, 1 ; [I]Add 1 to local variable 1 (a)[/I]
8:iload_2 ; [I]Push the value of b on the stack[/I]
9:iinc2, 1 ; [I]Add 1 to local variable 2 (b)[/I]
12:idiv ; [I]Pop two ints off the stack, divide, push result[/I]
13:istore_3 ; [I]Pop the stack into local variable 3 (c)[/I]
14:return
这帮助我了解好多了。
如果我错了,我一点请加入到这一点。
感谢您的答案。