\[\large答疑帖 \]
辨析i++
与++i
这两个表达式基本相同,均可对i
进行加一操作,但是当需要访问表达式的值时,会有略微不同,请看以下代码:
#include <stdio.h>
int main()
{
int i = 0;
printf("%d\n", i++);
printf("%d\n", ++i);
return 0;
}
输出结果如下:
0
2
这是怎么回事呢?
这两个表达式均可以分为两个操作:返回 \(i\) 的值、对 \(i\) 进行加 \(1\) 操作。但是执行操作的顺序不同,i++
是先返回 \(i\) 的值,然后再对\(i\) 进行加 \(1\) 操作;而++i
是先对 \(i\) 进行加 \(1\) 操作,然后再返回 \(i\) 的值。下面借助刚才的代码进行详细解释:
int i = 0;
printf("%d\n", i++);\\先返回i的值输出i(输出0),然后再对i进行+1操作
\\执行完后,i的值为1
printf("%d\n", ++i);\\先对i进行+1操作(输出1),然后再返回i的值输出i
\\执行完后,i的值为1
记忆方法:++在 \(i\) 前则先进行 \(+1\) 操作;++在 \(i\) 后则后进行 \(+1\) 操作
i--
与--i
同理