我们会发现有一些这样的现象,有的有括号,有的没有括号
#define MAX (1024*1024)
#define MAX 1024*1024
一个有括号,另外一个没有括号
主要由两个原因可以解释:
1.防止歧义。这里的括号主要是起到了边界的作用。
2.编码风格统一
我们来看一下下面的程序
#include<stdio.h>
#include<stdlib.h>
#define A (2+3)
#define B 2+3
int main()
{
int m,n;
m=A*2;
n=B*2;
printf("m=%d,n=%d\n",m,n);
return 1;
}
程序运行结果
m=10,n=8
看到差别了没吗 m=(2+3)*2=10 而 n=2+2*2=8 我们在这里也可以更好理解宏定义只是一个替换符号而已。很显然,m=10是我们想要的结果。
我想通过上面的例子之后,大家一定会在编码中使用括号了吧
有些时候查了一天的错误发现是宏定义的错 人都快给气死了。。。所以我建议一般都加上括号会为以后的编码避免很多麻烦。