#defineSQURARE(n)((n)*(n))#incl程
#define SQURARE(n) ((n)*(n))
#include <stdio.h>
int main(void)
{
int i=1;
while(i<=4)
printf("%d ",SQURARE(i++));
return 0;
}
求解过程
程序的执行结果为:
解析
宏替换后,SQURARE(i++)为 ((i++)*(i++)) ;
执行((i++)*(i++))过程
(1)i=1,
①对于第一个(i++),注意到i++的加加在后面,所以先取值i=1,后加加i=2;
②对于第二个(i++),同样,先取值i=2,后加加i=3;
③按取值,执行相乘(i++)*(i++)=1*2=2。
(2)i=3,
①对于第一个(i++),注意到i++的加加在后面,所以先取值i=3,后加加i=4;
②对于第二个(i++),同样,先取值i=4,后加加i=5;
③按取值,执行相乘(i++)*(i++)=3*4=12。
(3)i=5, while循环结束。
最后打印的结果正如上述所示。
热门标签: