一直知道前加和后加的区别是
++num;num+=1;return num
num++;int tmp=num;num+=1;return tmp;
但是就是不知道在什么情况下会生效,因为有的地方他两的运行结果看起来没有任何差别。
下面笔者就实际举例来说明他们的区别。
一、他们作为一个单独的运算出现在代码中,没有任何的赋值操作
int num = 0;
num++;
printf("%d\n", num);
int i = 0;
++i;
printf("%d\n", i);
可以看到没有差别。
二、作为单独的运算放在printf输出语句当中
int a = 0;
;
printf("%d\n", a++);
int b = 0;
;
printf("%d\n", ++b);
可以看到他们有区别,别急等看完再总结规律。
三、作为for循环的自增条件。
int c = 0;
int d = 0;
for ( c=0;c<10;c++)
{
printf("%d ", c);
}
printf("\n");
for ( d = 0; d < 10; ++d)
{
printf("%d ", d);
}
四、自增之后赋值给其他变量使用
int f = 0;
int g = 0;
for (g=f++; g < 10; ++g)
{
printf("%d ", g);
}
printf("\n");
int s = 0;
int m = 0;
for ( s=++m; s < 10; ++s)
{
printf("%d ", s);
}
五、自增之后赋值给自己使用
int f = 0;
int g = 0;
for (g=g++; g < 10; ++g)
{
printf("%d ", g);
}
printf("\n");
int s = 0;
int m = 0;
for ( s=++s; s < 10; ++s)
{
printf("%d ", s);
}
总结:当前加或者后加,单独使用时,它们没有区别,当前加或后加赋值给别的变量使用时遵循他们的规则。当前加或者后加赋值给它们自己变量使用时没有区别。自减也是这样的。
其实这种区别只在c里面有,后来的编程语言都改良了这种风格,只用一种自增方式。