列出了两个变量声明示例:
示例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 没有影响。
答案 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)。