#define N 2#define M N+1#define NUM 2*M+1#includeint main(){ printf("%d",NUM);}请问一下,为什么这样输出的N=2,M=3,NUM=6,加括号就正常运算了 ,不加括号的话有什么规律吗?
如果不加括号,那么NUM展开后就是 2 * 2 + 1 + 1 =6,因为宏只是代码替换,不会帮你加括号啥的如果M改为 #define M (N+1),那么NUM展开就是 2 * (2+1) + 1 = 7