x ++和x + 1之间究竟有什么区别?

时间:2013-03-19 18:31:53

标签: c operators

我一直在考虑增加一个指针,但我想现在一般我不知道这两个操作/运算符之间的语义差异。例如,我的教授说如果你有一个[10]你不能说++指向下一个元素,但我从经验中知道a + 1确实有效。我问为什么,他说“a ++是一个动作而一个+ 1是一个表达”。他的意思是“动作”是什么意思?如果有人能告诉我更多关于这个以及这两个操作之间的内在差异,我会非常感激。谢谢。

6 个答案:

答案 0 :(得分:10)

x ++和++ x

增量运算符x++将修改并通常返回旧x的副本。另请注意,带前缀的++x仍会修改x,但会返回新的x

事实上,x++可以被视为一种:

{
    int temp = x; 
    x = x + 1; 
    return temp;
}

++x更像是:

{
    x = x + 1;
    return x;
}

x + 1

x+1操作只返回表达式的值,修改x。它可以被视为:

{
    return (x + 1);
}

答案 1 :(得分:5)

x++是一种行为,因为它会改变x

x+1不会更改x

答案 2 :(得分:2)

a ++将转换为a = a + 1这是一个动作(由于包含的赋值操作) a + 1只是一个表达式,它指的是+ 1(指针术语或数字取决于一个类型)

答案 3 :(得分:1)

x ++相当于x = x + 1.这是一个动作,它实际上是在改变x的值。

答案 4 :(得分:1)

x++是一个const表达式,用于修改x的值(它增加1)。如果您引用x++,则表达式将在x递增之前返回值。

表达式++x将在递增后返回x的值。

x + 1但是,是表示x + 1的值的表达式。它不会修改x的值。

答案 5 :(得分:0)

每个表达式都返回一个结果(除非它是void)。

x + 1返回x + 1的值。

x++返回x的值,作为副作用,x的值在某个时刻递增,不一定立即递增。

这意味着您可以拥有:

x = x + 1;

但这是非法的:

x = x++;