【发布时间】:2013-03-22 05:15:07
【问题描述】:
我在 C 中看到了 MAX 宏的两种可能实现方式。哪一种最好?
define MAX(X,Y) ((X) < (Y) ? : (Y) : (X))define MAX(X,Y) 0.5*(X+Y+ABS(X-Y))
【问题讨论】:
-
第二个选择是混淆的,复杂的,只能对浮点数正确工作,并且使用浮点运算而不是比较和选择。您提出它是否有任何原因,或者这是对 StackOverflow 用户“只是为了看看您是否在关注”的测试?
-
直觉上(这对于性能决策来说总是一个糟糕的基础)我会说尽可能避免使用浮点数学。除此之外:对其进行基准测试!
-
如果您从第一个选项中删除语法错误,它也会更好。
-
让我们看看...这样使用会返回什么:
MAX(++x, --y),假设 x、y 的先前值为 1、2? -
MIN and MAX in C 的可能重复项
标签: c performance optimization definition