宏定义只是一个代替
#define LENGTH WIDTH+40 和#define LENGTH (WIDTH+40)的区别在于多了个括号
先看#define LENGTH WIDTH+40
带到v=LENGTH*20 V=? 中
v=WIDTH+40*20=80+40*20=880
再看#define LENGTH (WIDTH+40)
带到v=LENGTH*20 V=? 中
v=(WIDTH+40)*20=(80+40)*20=120*20=2400
关于宏定义,不用多想,他就是一个替身,把原来的数直接带进去就可以,不做任何改变
要看区别直接,替换到语句中就明白了:
1,
设有一以下宏定义 #define WIDTH 80
#define LENGTH WIDTH+40
则执行赋值语句 v=LENGTH*20 V=?
替换得: v=80+40*20 这显示不是你想要结果
2,
设有一以下宏定义 #define WIDTH 80
#define LENGTH (WIDTH+40)
则执行赋值语句 v=LENGTH*20 V=?
替换得: v= (80+40)*20
所以一看就明白结果是不一样的。
第一个v是880,第二个是4800。区别:先弄清楚宏的替换方式,宏的替换是用宏所代替的串直接替换宏名,而不是用宏的计算结果替换宏。例如:你的第一个替换为,v=80+40*20,第二个替换为,v=(80+40)*20。lz好好捉摸下,希望能帮到你。