TC的结果是正确的。
理由一:
C的规则:
1、 同优先级,从左到右
2、 i++ ,是先使用,后自增加。
理由二:
#define SQ(y) ((y)*(y))
========= --》 这里是((y) * (y)),而不是 (y * y),
意思是算式,不是直接代值。
可以理解为: ( f1(y) * f2(y) )
============================================================
main(){
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
}
SQ(i++) 代换成 :(i++) * (i++)
先f1(y) =1 ,i=2 ;
然后再f2(y) ,此时i 已经是 2 了 。。。。 后面省略。。。 |