我不理解此代码示例的前/后递增:
int1 = 14;
int2 = ++int1;
// Assert: int1 == 15 && int2 == 15
在这个预增量示例中,为什么int1 == 15?为什么int1递增而不仅仅是int2?
然后我们有:
int1 = 14;
int2 = int1++;
// Assert: int1 == 15 && int2 == 14
在这个后递增的例子中,为什么int2 == 14?为什么int2没有增加但是int1是?
答案 0 :(得分:3)
int1 = 14;
int2 = ++int1;
相当于
int1 = 14;
int1 = int1 + 1;
int2 = int1;
和
int1 = 14;
int2 = int1++;
相当于
int1 = 14;
int2 = int1;
int1 = int1 + 1;
答案 1 :(得分:2)
++int1
和int1++
都会增加int1
,因为这就是增量运算符的作用:它们增加了它们的操作数。
第一个示例中int2
为15,第二个示例中为14的原因是因为前递增和后递增运算符的返回值不同:后递增运算符递增操作数,但返回操作数在递增之前的值。预增量运算符返回操作数的新值。
答案 2 :(得分:1)
preincrement运算符递增其操作数并返回递增的值:
int i = 0;
++i; // now i is 1, and the returned 1 is discarded
int j = ++i; // and now i is 2, and the returned 2 is stored in j
postincrement增加其操作数并在增量之前返回值:
int i = 0;
i++; // now i is 1, and the returned 0 is discarded
int j = i++; // now i is 2, and the returned 1 is stored in j
答案 3 :(得分:0)
使用预递增示例,int1递增,然后分配给int2。使用后递增示例,int1被赋值给int2,而THEN int2被递增。
答案 4 :(得分:0)
通过在变量之前或之后使用++,无论如何都要递增该变量。将操作前后放置的内容有什么变化。
int1的值
int1 = 1;
int2 = int ++; //返回int1值[1]并将int1递增1 [2]
int3 = ++ int; //将int1 [2]增加1 [3],然后返回int1 [3]
答案 5 :(得分:0)
你的问题很难回答,因为没有办法弄清楚它们是如何出现的。
在你的第一个问题中,你问为什么int1
会增加。唯一可能的答案是:因为你增加了它。您将增量运算符应用于它。将增量运算符应用于变量(无关紧要,前缀或后缀)时,变量会递增。周期。
现在,在您的两个示例中将增量运算符应用于int1
。现在你正在问为什么它会增加?对不起,这样的问题没有任何意义。如果你不知道增量运算符增量变量,你需要在提问之前先读一些基本的书。
至于int2
...你永远不会将增量运算符应用于int2
,因此它永远不会递增。决不。您的示例中没有int2
递增的位置。
在这两种情况下,只需为int2
分配一个值。该值是应用于int1
的递增运算符的结果。在这种情况下你需要知道的是后缀增量返回其操作数的旧值(所以int1++
计算结果为14
),而前缀增量返回< em> new 其操作数的值(因此,++int1
计算为15
)。这是您在这两种情况下进入int2
的内容。