今天上课老师给看了一个挺有意思的代码
#include<stdio.h>
int add(int a)
{
a++;
return a;
}
int main()
{
int i = 0;
printf("%d,%d\n", add(i++), add(i++));
printf("%d", i);
return 0;
}
然后自己不是太理解自增运算符的作用,于是动手实验了一下:
#include<stdio.h>
int add(int a)
{
a++;
return a;
}
int main()
{
int s = 0;
int x = add(s++);
printf("x 是 %d\ns 是 %d", x, s);
return 0;
}
运行结果是
即
int x = add(s++);
这句话等价于
int x = add(s);
s=s+1;
由此可看出自增运算符的运算特点:
- 后置自增运算符在一个语句运行的最末尾执行。
- 后置自增运算符执行完毕以后,被操作的数字的值会发生变化。
再结合C语言默认的函数调用协定为 cdecl ,参数从右至左入栈,由此可以推测运行结果。