【发布时间】:2011-05-05 12:47:02
【问题描述】:
对于大多数人来说,这是一个愚蠢的问题 - 我知道 - 但我是这里的初学者之一,我不明白为什么这里的输出是 12 这个 (x--) 对结果有什么影响?
int x, y;
x = 7;
x-- ;
y = x * 2;
x = 3;
【问题讨论】:
-
我知道这个线程已经死了,但是 - 在 x=7 上放一个断点,逐行查看 x 和 y 的值
标签: java
对于大多数人来说,这是一个愚蠢的问题 - 我知道 - 但我是这里的初学者之一,我不明白为什么这里的输出是 12 这个 (x--) 对结果有什么影响?
int x, y;
x = 7;
x-- ;
y = x * 2;
x = 3;
【问题讨论】:
标签: java
x-- 会将x 的值减1。它是一个后缀减量运算符,--x 是一个前缀减量运算符。
那么,这里发生了什么?
int x, y; //initialize x and y
x = 7; //set x to value 7
x--; //x is decremented by 1, so it becomes 6
y = x * 2; //y becomes 6*2, therefore y becomes 12
x = 3; //x becomes 3
以此类推,++ 会将值增加 1。它还有前缀和后缀变体。
【讨论】:
x-- 将 x 的值减/减一。
Conversley x++ 加/加一。
加号或减号可以在变量名、前缀和后缀之前(--x)或之后(x--)。如果在表达式中使用,前缀将返回执行操作后的值,后缀将返回执行操作之前的值。
int x = 0;
int y = 0;
y = ++x; // y=1, x=1
int x = 0;
int y = 0;
y = x++;// y=0, x=1
【讨论】:
-- 是“减量”运算符。它只是意味着它所操作的变量(在本例中为 x 变量)获得的变量减 1。
基本上是:
x = x - 1;
那么代码做了什么:
int x,y ; # Define two variables that will hold an integer
x=7; # Set variable X to value 7
x-- ; # Decrement x by one : so x equals 7 - 1 = 6
y= x * 2; # Multiply x by two and set the result to the y variable: 6 times 2 equals 12
x=3; # set x to value 3 (I do not know why this is here).
【讨论】:
x++ 在计算 x 后增加 x。 ++x 在计算 x 之前增加 x。
int x = 0;
print(++x); // prints 1
print(x); // prints 1
int y = 0;
print(y++); // prints 0
print(y); // prints 1
--
【讨论】:
x-- 或 x++,所以答案是有效的(但我看到 OP 专门询问了x--)。 :)
例子:
x = 7;
y = --x; /* prefix -- */
这里 y = 6(--x 将 x 减 1)
y = x--; /* postfix -- */
这里 y = 6 (x-- 首先使用表达式中 x 的值,然后将 x 减 1)
【讨论】:
x++ 本质上是x = x + 1(同样适用于++x)。 x 加 1。
x-- 本质上是x = x - 1(同样适用于--x)。 x 减 1。
区别在于x++和++x在语句/表达式中的使用方式:在++x中,x在被使用之前先增加1first,而在@987654333中使用@, x 被使用(在递增之前)首先,一旦使用,它就会递增 1。
【讨论】:
请注意,有时前置和后置增量运算符可能会产生意想不到的结果
Why does this go into an infinite loop?
还有什么作用:
x[i]=i++ + 1;
做
在这里阅读: http://www.angelikalanger.com/Articles/VSJ/SequencePoints/SequencePoints.html
【讨论】: