任何便携式位技巧在C++ 98中选择最多2个数字?

Gam*_*per 1 c++ templates bit-manipulation

我有一个功能

template< class T>
T MaxMagnitudeOf2( const T a, const T b)
{
    T a = a<0? -a: a;
    T b = b<0? -b: b;
    return a>b? a: b;
}
Run Code Online (Sandbox Code Playgroud)

使用一些技巧可以更有效地实现所有C++基本类型(至少16/32位类型)吗?

rub*_*nvb 5

不要过度思考:

return std::max(std::abs(a), std::abs(b));
Run Code Online (Sandbox Code Playgroud)

确保包含两者<cstdlib><cmath>获得整数和浮点重载.感谢C的详细信息.

  • 在C++ 11之前,"long long"也没有问题,因为"long long"类型本身还不存在.@GameDeveloper`std :: abs`的一些重载在`<cstdlib>`中.其他人在`<cmath>`.包括两者. (2认同)