快速检查C ++中的递增/递减运算符

时间:2013-06-28 03:21:35

标签: c++ increment variable-declaration decrement

列出了两个变量声明示例:

示例1:

x = 10;
y = ++x;

示例2:

x = 10;
y = x++;

这本书说在例1中 y 等于11,而在例2中 y 等于10.我想我明白了,这就是我的推理,所以请让我知道我是否有这个和/或是否有更简洁的思考方式。

在第一个例子中, y 等于11,因为它简单地设置为等于“x + 1”,因为增量运算符首先出现,而在第二个例子中 y 是设置为等于 x 的原始声明,然后增量操作分别在 x 上发生。从示例2中的视觉上看,似乎有意义的是变量都在等号旁边,然后“x + 1”操作将作为对该等式的事后想法而发生,而对 y 没有影响。

3 个答案:

答案 0 :(得分:2)

你是对的。

y=++x

表示:    x++; y=x;

然而,

y=x++;

表示:      y=x; x++;

答案 1 :(得分:1)

我认为你已经得到了它,但可以用更简单的词语理解它。

y = x++;

此行后增加x。结果是

y = 10, x = 11

而在

y = ++x;

此行前增加x。结果是

y = 11, x = 11

答案 2 :(得分:1)

黄金法则:

前缀增量/减量(++ x或--x)具有从右到左的关联性。

后缀增量/减量(x ++或x--)具有从左到右的关联性。

x = 10

if (x++ == 11) {        
    // Post increment
}


if (++x == 11 ) {
    // Pre increment
}

所以在你的情况下:

示例1:

x = 10;
y = ++x;

x的原始值(此处为10)先递增,然后分配给y。

示例2:

x = 10;
y = x++;

x的原始值首先分配给y,然后递增(到11)。