从任何观点来看,++ i和i + = 1之间的区别是什么

cha*_*rre 4 c operators

这是kn king的c编程问题:一种现代的方法.我无法理解他给出的解决方案: -

The expression ++i is equivalent to (i += 1). The value of both expressions is i after 
the increment has been performed.
Run Code Online (Sandbox Code Playgroud)

我怎么理解这个呢?

the*_*eye 9

i = 10
printf("%d", i++);
Run Code Online (Sandbox Code Playgroud)

将打印10,在哪里

printf("%d", ++i);
Run Code Online (Sandbox Code Playgroud)

将打印11

X = i++ 可以这么想

X = i
i = i + 1
Run Code Online (Sandbox Code Playgroud)

其中,作为X = ++i

i = i + 1
X = i
Run Code Online (Sandbox Code Playgroud)

所以,

printf ("%d", ++i); 
Run Code Online (Sandbox Code Playgroud)

和...一样

printf ("%d", i += 1);
Run Code Online (Sandbox Code Playgroud)

但不是

printf ("%d", i++);
Run Code Online (Sandbox Code Playgroud)

虽然i这三个陈述中的任何一个之后的价值都是相同的.


use*_*342 5

该解决方案的意思是说,有没有什么区别,++i具有相同的含义(i += 1)不管什么i恰好是不管表达的情况下.括号周围i += 1确保等价性即使在上下文包含更多算术时也是如此,例如++i * 3等价(i += 1) * 3但不i += 1 * 3等于(相当于i += 3).

同样不适用于i++,具有相同的副作用(递增i),但周围表达式中的值不同 - i递增之前的值.