i++ 和 ++i 的使用分为两种情况:1、单独使用;2、放入表达式中使用。
1、第一种情况,单独使用时从实现的效果(即程序的运行结果)上看是等价的。
2、当放入表达式中使用,则有本质区别:
b = ++i; 前缀形式,等价于 i = i + 1; b = i;
b = i++; 后缀形式,等价于 b = i; i = i + 1;
i++ 是先使用后自加,在结束标志时才加上1(;和,和函数()都是结束标志);而 ++i 则是先自加后使用。
i++ 可以替换成数值,++i 可以替换成变量。
例如:
#include <stdio.h>
int main()
{
int i = 2;
num = (++i) + (++i) + (++i) + (++i);
printf("%d", i);
return 0;
}
其中num = 4+4+5+6=19;
#include <stdio.h>
int main()
{
int i = 2;
i = i * ((i++) + (++i));
printf("%d", i);
return 0;
}
先算括号内i++在结束时加1,因++i 所以i 变为3,i = 3 * (3 + 3) = 18,18再加1为19。
#include <stdio.h>
int main()
{
int i = 2;
i = (i++) + (++i) + (i++) + (++i);
printf("%d", i);
return 0;
}
先是前两个因++i 所以i 为3,经第四++i 后 i 为4,所以为3+3+3+4=13,最后13+1+1=15。
#include <stdio.h>
void func(int a, int b)
{
printf("a = %d\n", a);
printf("b = %d\n", b);
}
int main()
{
int i = 2;
func(++i, i++);
return 0;
}
func(++i, i++) 从右向左计算,经过i++,i = 2,中间经过逗号加1,i = 3,再经过++i,成为4。所以a = 4, b = 2。