0

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

示例 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没有影响。

4

3 回答 3

2

你是对的。

y=++x

方法: x++; y=x;

然而,

y=x++;

方法: y=x; x++;

于 2013-06-28T03:31:42.353 回答
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)。

于 2013-06-28T03:57:26.240 回答
1

我想你已经明白了,但它可以用更简单的词来理解。

y = x++;

在此行之后增加 x。结果是

y = 10, x = 11

而在

y = ++x;

在此行之前增加 x。结果是

y = 11, x = 11
于 2013-06-28T03:36:16.067 回答