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