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++ 在这里做啥?的主要内容,如果未能解决你的问题,请参考以下文章

Groovy 在这里做啥?

ubuntu里的/usr/lib/x86_64-linux-gnu这个文件夹是做啥的

gcc 在这里做啥来为每个线程运行一次此代码?

for(int i : x) 是做啥的? [复制]

我使用 google 按钮登录首先进入主页,然后显示登录选项(电子邮件帐户)。在这里做啥?

-> <- 运算符是做啥的?