x-- 或 x++ 在这里做啥?
Posted
技术标签:
【中文标题】x-- 或 x++ 在这里做啥?【英文标题】:what does x-- or x++ do here?x-- 或 x++ 在这里做什么? 【发布时间】:2011-05-05 12:47:02 【问题描述】:对于大多数人来说,这是一个愚蠢的问题 - 我知道 - 但我是这里的初学者之一,我不明白为什么这里的输出是 12 这个 (x--
) 对结果有什么影响?
int x, y;
x = 7;
x-- ;
y = x * 2;
x = 3;
【问题讨论】:
我知道这个线程已经死了,但是 - 在 x=7 上放一个断点,逐行查看 x 和 y 的值 【参考方案1】: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。它还有前缀和后缀变体。
【讨论】:
【参考方案2】: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-- 将 x 的值减少 1 x = 6 y= x*2 y=12 我知道了,但是其他 x=3 在这里做什么? 将 x 赋值为 3。【参考方案3】:--
是“减量”运算符。它只是意味着它所操作的变量(在本例中为 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 最好的答案之一。我猜这里的 3 是为了混淆学生,因为它是去年的考试 Q 很高兴能帮上忙 :)。如果这是考试的一部分,则应该在课程中进行介绍。这通常是您在接触编程语言时首先学到的东西之一。【参考方案4】: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
--
【讨论】:
标题没有这样说:D。顺便说一句。 @aioobe,OP 询问了x--
或 x++
,所以答案是有效的(但我看到 OP 专门询问了x--
)。 :)【参考方案5】:
例子:
x = 7;
y = --x; /* prefix -- */
这里 y = 6(--x 将 x 减 1)
y = x--; /* postfix -- */
这里 y = 6 (x-- 首先使用表达式中 x 的值,然后将 x 减 1)
【讨论】:
【参考方案6】:x++
本质上是x = x + 1
(同样适用于++x
)。 x
加 1。
x--
本质上是x = x - 1
(同样适用于--x
)。 x
减 1。
区别在于x++
和++x
在语句/表达式中的使用方式:在++x
中,x
在被使用之前先增加1first,而在@987654333中使用@, x
被使用(在递增之前)首先,一旦使用,它就会递增 1。
【讨论】:
【参考方案7】:请注意,有时前置和后置增量运算符可能会产生意想不到的结果
Why does this go into an infinite loop?
还有什么作用:
x[i]=i++ + 1;
做
在这里阅读: http://www.angelikalanger.com/Articles/VSJ/SequencePoints/SequencePoints.html
【讨论】:
以上是关于x-- 或 x++ 在这里做啥?的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu里的/usr/lib/x86_64-linux-gnu这个文件夹是做啥的