C/C++有关宏定义求较大值较小值的问题

看到很多书上和网上都说,应该这么写:#define MAX(A, B) ((A)>(B)?(A):(B))
为什么不可以直接这样写:#define MAX(A, B) A>B?A:B ?
请问前一个写法中加上那些括号有什么意义?

第1个回答  2014-04-06
比如:要比较两个数的大小,有的时候可能是比较两个表达式的大小:
比如:1+4 2*3
比较上述两个表达式的大小如果不加括号:
1+4 > 2*3 ? 1+4 :2*3 变成这样了,因为宏定义就是简单替换,很明显这样的话,会运算顺序就不一样了,结果肯定也不一样了本回答被提问者采纳
第2个回答  2015-12-04
#define MAX(A, B) (A) > (B)? (A) : (B)
加个括号加强优先级 调用的时候直接MAX(数, 数);本回答被网友采纳
第3个回答  2014-04-06
宏定义相当于代码替换,如果写成#define MAX(A, B) A>B?A:B 那么给你举个例子

5*MAX(1,4);展开后就是5*1>4?1:4结果就不是你想要的20,而是1,如果想要详细了解宏,请百度之
第4个回答  2014-04-06
括号可以强制运算那些优先级比较低的 若果不清楚优先级 最好加上括号 以免出错
相似回答