i++是后缀自增运算符,++i是前缀自增运算符。
正常情况下,执行完毕,两种等价,例如:
int i=1;
i++;
int i=1;
++i;
执行完毕,i的值均为2。
但是在复合的表达式中、函数调用中却有明显区别。
i++,表示先取i的值进行表达式计算或函数调用,最后加法再计算 i=i+1;
++i,表示先加法计算i=i+1,然后在进行表达式计算或函数调用。
例如:
int i = 1;
int k1 = i++; // k1等于1
i=1;
int k2 = ++i; // k2等于2
i = 1;
printf("%d\n", i++); // 输出1,i最后值仍为2
i = 1;
printf("%d\n", ++i); // 输出2
// 定义函数
int add(int i)
{
return i;
}
i = 1;
printf("%d\n", add(i++)) ; // 输出 1
i = 1;
printf("%d\n", add(++i)); // 输出 2
完整的示例代码运行:
#include <stdio.h>
int main(void) {
int i = 1;
int k1 = i++; // k1等于1
i=1;
int k2 = ++i; // k2等于2
printf("%d\n%d\n", k1, k2);
i = 1;
printf("%d\n", i++); // 输出1,i最后值仍为2
i = 1;
printf("%d\n", ++i); // 输出2
// 定义函数
int add(int i) {
return i;
}
i = 1;
printf("%d\n", add(i++)) ; // 输出 1
i=1;
printf("%d\n", add(++i)); // 输出 2
return 0;
}
运行结果:
1
2
1
2
1
2
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。