我从AGGREGATE Magic中找到了一个快速计算最大值的技巧。唯一的问题是整数,但是我尝试了一些东西,不知道如何为无符号整数制作版本。
inline int32_t max(int32_t a, int32_t b)
{
return a - ((a-b) & (a-b)>>31);
}
有什么建议吗?
编辑
不要使用它,因为正如其他人所说,它会产生未定义的行为。对于任何现代架构,编译器将能够从 发出无分支条件移动指令return (a > b) ? a : b
,这将比相关函数更快。