#define f1(n) (n)*(n)int i=5;
int k=0;
k=f1(i++);
printf("%d %d",i,k);
输出结果:int i=5;
int k=0;
k=f1(++i);
printf("%d %d",i,k);
输出结果:分别是什么结果
顺便解释下啊,谢谢了
int k=0;
k=f1(i++);
printf("%d %d",i,k);
输出结果:int i=5;
int k=0;
k=f1(++i);
printf("%d %d",i,k);
输出结果:分别是什么结果
顺便解释下啊,谢谢了
// i++是先运算,再自加。因为f1(n)定义为(n)*(n),用到两次n,所以自加了两次,变成了77 49
// ++i是先自加,然后运算。后面的同上。
用到两次n,
第二次用n时,这时候i是不是已经自加为6了呢?
那样返回值应该是:5*6=30
为什么不是呢?
// i++是先运算,再自加。因为f1(n)定义为(n)*(n),用到两次n,所以自加了两次,变成了77 49
// ++i是先自加,然后运算。后面的同上。
int k=0;
k=f1(i++);
printf("%d %d",i,k);
输出结果:
(5++)*(5++) = 25
然后在执行2次i++ i = 7int i=5;
int k=0;
k=f1(++i);
printf("%d %d",i,k);(++5)*(++5) = 49
先执行++i,i = 7
然后7*7 = 49