下面的程序结果是什么?怎么算?急求答案# include # define M 3# define N M+1# define NN N*N/2void main(){ printf("%d\n",NN); printf("%d\n",5*NN);}
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/30 00:42:56
![下面的程序结果是什么?怎么算?急求答案# include # define M 3# define N M+1# define NN N*N/2void main(){ printf(](/uploads/image/z/9757757-29-7.jpg?t=%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9E%9C%E6%98%AF%E4%BB%80%E4%B9%88%3F%E6%80%8E%E4%B9%88%E7%AE%97%3F%E6%80%A5%E6%B1%82%E7%AD%94%E6%A1%88%23+include+%23+define+M+3%23+define+N+M%2B1%23+define+NN+N%2AN%2F2void+main%28%29%7B+printf%28%22%25d%5Cn%22%2CNN%29%3B+printf%28%22%25d%5Cn%22%2C5%2ANN%29%3B%7D)
下面的程序结果是什么?怎么算?急求答案# 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);
}