1.分类
- 前自增后自增
- 前自减后自减
2.二者的异同
相同:最终都使 i 的值加一
不同:前自增整体表达式的值是i加1之后的值;后自增整体表达式的值是i加1之前的值。
#include <stdio.h>
int main(void)
{
int i,j,k,m;
i = 3;
j = 3;
k = i++;
m = ++j;
printf("%d %d %d %d",i,j,k,m);
}
//result : 4 4 3 4
int i = 3;
printf("%d %d %d",i++,++i,i);
//result : 4 5 5
3.为什么会出现自增?
有i += 1;
不就可以了吗?为什么还有出现i++
?原因:代码更精炼,自增的速度更快。
4.学习自增时要明白的几个问题
我们编程时应该尽量屏蔽掉前自增和后自增的区别,自增表达式单独成一个语句,最好不要作为一个更大的表达式的一部分来使用。
比如:int m = i++ + ++i + i + i++;
,这样写不但是不规范的代码,而且是不可移植的代码。
这个程序在不同的机器上的运行结果是不一样的,这里面牵扯到一个叫做顺序点的问题,因为我们不知道i++
执行结束之后,这一步是否立即生效,就是在我执行++i
的时候,前面的i有没有立即加1是不知道的,我们只有顺序点才能明确的知道这个操作是否生效,而顺序点只有三个:逗号,括号,分号。
作为一个优秀的程序员,在你的程序里面不应该体现出i++和++i的区别。