宏定义是咋回事?

来源:百度知道 编辑:UC知道 时间:2024/05/07 18:14:04
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
printf("%d,%d,%d",N,M,NUM);}请问那个NUM的值在这个程序中为什么是8
但(M+1)*M/2再怎样也不能拼出个8来呀

NUM=(M+1)*M/2
把M=N+1代进去,那就是:
NUM=(N+1+1)*N+1/2,编译程序不会给你自动加上括号。
所以再把N=2代进来,就是
NUM=(2+1+1)*2+1/2,就是4*2+1/2=8(1/2在C语言中是0)

#define xx ashfihfuhfisufhs
就会使编译时程序中所有的xx替换成ashfihfuhfisufhs
谢谢!

我认为是6