下面的程序结果是什么?怎么算?急求答案# include # define M 3# define N M+1# define NN N*N/2void main(){ printf("%d\n",NN); printf("%d\n",5*NN);}
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 22:42:20
下面的程序结果是什么?怎么算?急求答案# include # define M 3# define N M+1# define NN N*N/2void main(){ printf("%d\n",NN); printf("%d\n",5*NN);}
下面的程序结果是什么?怎么算?急求答案
# include
# define M 3
# define N M+1
# define NN N*N/2
void main()
{
printf("%d\n",NN);
printf("%d\n",5*NN);
}
下面的程序结果是什么?怎么算?急求答案# include # define M 3# define N M+1# define NN N*N/2void main(){ printf("%d\n",NN); printf("%d\n",5*NN);}
#define 就是宏定义,# define M 3
就是程序中的M都可以用3来替换,就这样就算.但一定要注意,你必须把全部宏定义全部替换完之后,才能计算结果.
# define M 3
# define N M+1
# define NN N*N/2
(1):
printf("%d\n",NN);
NN = N*N/2 = M+1*M+1/2 = 3 + 1*3 + 1/2 = 6
(2):同理
5*NN = 5*3 + 1*3 + 1/2 = 18
因为宏定义,在计算的时候先进行替换,然后在进行计算,不是我们通常想象的那样:
M = 3;
N = M + 1 = 4;
NN = N*N/2=4*4/2=8;
5*NN =5*8 =40;
所以在使用宏定义的时候,为了避免出现这样的错误,通常我们使用(),如:
# define M (3)
# define N (M+1)
# define NN (N*N/2)
void main()
{
printf("%d\n",NN);
printf("%d\n",5*NN);
}