为什么会循环八次

来源:百度知道 编辑:UC知道 时间:2024/05/20 09:30:31
#include<stdio.h>
#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");}

NUM = (N+1+1)*N+1/2 = (2+1+1)*2+1/2

其实 NUM=8.5
改成:#define NUM (M+1)*(M)/2

编程的时候要注意了,宏只是简单的代换,记得打括号。

#define NUM (M+1)*M/2 <=>
#define NUM (N+1+1)*N+1/2 <=>
#define NUM (2+1+1)*2+1/2 <=>
#define NUM 8.5

so...

you should:

#define NUM ((M)+1)*(M)/2

#define N 2
#define M N+1
#define NUM (M+1)*M/2

最后一行相当于把num定义为
(N+1+1)*N+1/2
就是8啊

因为
#define NUM (M+1)*M/2 相当于 #define NUM (N+1+1)*N+1/2
也就相当于(2+1+1)*2+1/2=8.5

num=m+1,m=(n+1),n=2,所以M+1=4;NUM=8,所以循环8次

你就展开