任何人都可以解释为什么这样的调用不会增加我的i
值吗?
int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));
它离开i=0
而不是至少增加1,这样在第二次调用中它就是1.
答案 0 :(得分:7)
i = i++
就像在做:
int old_i = i;
i = i + 1;
i = old_i;
实际发生的是i++
的值是i
之前增量发生的值,然后i
将获得值。 。i
。
在一行中i++
将使用i
的旧值,然后它会递增它。
答案 1 :(得分:4)
i = i++
先分配,然后增加第二
继承人的执行基本上是什么样的:
list.get(7 + (i = i)); //list.get(7);
i = i + 1; //i = 1
list.get(7 + (i = i); //list.get(8);
i = i + 1; //i = 2
++i
将首先递增变量并指定第二个
答案 2 :(得分:1)
i = i++
表示i
将被赋予i
的旧值,然后将增加1.如果您想真正增加值,则应编写:< / p>
int i = 0;
list.get(7 + (i++));
list.get(7 + (i++));
或:
int i = 0;
list.get(7 + (i+1));
list.get(7 + (i+2));