如何宏定义一个MAX(A,B)求2数最大值,且A,B这2个参数只被计算一次?

stanleyrprose 2005-10-24 11:18:27
#define max(a,b) (((a)>(b))?(a):(b))
其中a,b有可能被计算2次,这样对这样的宏调用max(x++,y),如果x>y则x会++两次,怎样才能只调用一次?
...全文
1412 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-10-24
  • 打赏
  • 举报
回复
不知道怎么办~
stanleyrprose 2005-10-24
  • 打赏
  • 举报
回复
这个是道练习题,并不是遇到的实际问题,我就是想怎么才能定义出这么个宏。
drizzlecrj 2005-10-24
  • 打赏
  • 举报
回复
template<typename T>
inline T MAX(const T &x, const T &y)
{
return x > y ? x : y;
}
ec上说了尽量不要使用宏
yzisyz 2005-10-24
  • 打赏
  • 举报
回复
使用模板函数来重写 max 宏。
PMsg 2005-10-24
  • 打赏
  • 举报
回复
自己写一个MAX函数不就得了
stanleyrprose 2005-10-24
  • 打赏
  • 举报
回复
yzx1983(捕风捉影)说的很有道理,不过在表达式中改变变量可是使代码简洁!

还有高手回答这个问题???
寻开心 2005-10-24
  • 打赏
  • 举报
回复
c++当中的模板
yzx1983 2005-10-24
  • 打赏
  • 举报
回复
我始终认为不应抛弃宏,而应抛弃在表达式中改变变量的值这种不良习惯。

70,017

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧