C ++运算符前后递增

时间:2011-03-06 18:05:23

标签: c++

我不理解此代码示例的前/后递增:

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是?

6 个答案:

答案 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)

++int1int1++都会增加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的内容。