一个较简单的C程序(有关宏定义),请教!

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:39:13
#define f1(n) (n)*(n)
int i=5;
int k=0;
k=f1(i++);
printf("%d %d",i,k);

输出的结果是:7 25
请问k为什么是25,而不是42?
但是"()"的优先级不是最高吗?这样就应该先算"()"的内容,也就是应该先自加,再做乘运算!?
还有请问i不是先自加为6,再自加为7,为什么换成(++i)后不是6*7=42、而是7*7=49呢?
请各位指教~!

因为(i++)*(i++)=(5)*(5)因为公式计算完后才会计算++,如果写成f1(++i)应当可以

不是优先级的问题,我记得有一教材中有一句说,++i这个公式的值为i+1,i++这个公式的值为i,但执行后的结果是一样的就是i的值会加一。