输出结果为:
1 9
原因如下:
i的初始值为1,
对于while(i<=4)printf("%d\t",POWER(i++));
第1次循环判断:i<=4成立,
执行POWER(i++),进行宏展开,得到((i++)*(i++)),
对于i++处理来说,是先将i的值带入表达式,表达式计算完毕后再进行++处理,
所以((i++)*(i++))的值=1*1=1,
表达式计算完毕后,i进行两次++处理,i的值等于3
此次循环输出: 1
第2次循环判断:i<=4成立,
执行POWER(i++),进行宏展开,得到((i++)*(i++)),
对于i++处理来说,是先将i的值带入表达式,表达式计算完毕后再进行++处理,
所以((i++)*(i++))的值=3*3=9,
表达式计算完毕后,i进行两次++处理,i的值等于11
此次循环输出: 9
第3次循环判断:i<=4不成立,循环结束
所以最后输出:
1 9
温馨提示:答案为网友推荐,仅供参考