下面程序的运行结果是_______。 #define SQ(y)((y)*(y)) main( ) { int i=1: while(i

admin2014-10-20  30

问题 下面程序的运行结果是_______。
#define SQ(y)((y)*(y))
main(    )
{
int i=1:
while(i<=5)
printf(“%d\n“,SQ(i+4-));
}

选项

答案30

解析 宏调用时,SQ(i++)被代换为((i++)*(i++))。在第一次循环时,由于i等于1,其计算过程为:表达式中前一个i初值为1,然后i自增1变为2,因此表达式中第2个i初值为2,两相乘的结果也为2,然后i值再自增1,得3。在第二次循环时,i值已有初值为3,因此表达式中前一个i为3,后一个i为4,乘积为12,然后i再自增1变为5。进入第三次循环,由于i值已为5,所以这将是最后一次循环。计算表达式的值为5*6等于30。i值再自增1变为6,不再满足循环条件,停止循环。
转载请注明原文地址:https://jikaoti.com/ti/4P9fFFFM
0

最新回复(0)