#include <stdio.h>
#include <stdlib.h>
#define adds(a) a*a
int main(void)
{
int i=3,j;
j = adds(i++);
printf("%d/n",j);
j = adds(++i);
printf("%d/n",j);
getchar();
return 0;
}
输出为 9 49
c语言对于这种运行的处理不是把i++或++i一个一个分开算的。
编译器在遇到i++时 直接将i入栈 之后再增加1
遇到++i时直接将i增加1再入栈
所以adds(i++)是先计算完adds之后再增加i的值的
adds(++i)是先增加i的值 之后再运算的!
当然编译器不通 结果可能会很不一样 这是一种很不规范的写作习惯 只是在面试中需要注意