作业帮 > 综合 > 作业

宏定义中的参数需要加括号的原因

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 04:35:10
宏定义中的参数需要加括号的原因
写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个.
#define MIN(A,B) ((A)
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换,所以如果有以下情况:
#define COM(A,B) (A)*(B)
那么COM(6+5,3)这个调用会怎么替换呢?它会换成这样:
(6+5)*(3)
显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:
#define COM(A,B) A*B
那么COM(6+5,3)这个调用会怎么替换呢?它就会换成这样:
6+5*3
这样显然就和宏的意图不符合了.
但是你所写出的程序中的参数(即*p++和b)调用原程序的宏,这两种情况没区别.加括号是为了更通用.