#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
n++;
printf("%d",n);
}
printf("\n“);
}
其中for语言构成的循环执行了多少次? 其中宏定义的NUM是多少?请说一下程序执行过程,谢谢啦~~~
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
n++;
printf("%d",n);
}
printf("\n“);
}
其中for语言构成的循环执行了多少次? 其中宏定义的NUM是多少?请说一下程序执行过程,谢谢啦~~~
这么多答案,都没有说到真正的问题上,
这是考宏定义的,注意怎么展开宏
很明显的问题是NUM为多少,就是循环多少
#define N 2
#define M N+1
#define NUM (M+1)*M/2
NUM-> (M+1)*M/2
再展开M,注意不要乱加括号
(N+1 +1 )* N+1 /2, 特别注意,没有新的括号加入
再展开
(2+1+1)*2+1/2
结果为8
NUM=(M+1)*M/2=[(N+1+1)*N+1]/2=[(2+1+1)*2+1]/2=9/2
因为i=1,i<=9/2,所以执行了四次!
NUM应该是==6
(M+1)*M/2 --->(3+1)*3/2