Windows API中的MulDiv便利功能相当于(a*b)/c
,但它在分割前将a*b
的中间结果存储在64位变量中它由c
来避免整数溢出,其中a*b
大于MAX_INT
但(a*b)/c
不是。{/ p>
WINBASEAPI
int
WINAPI
MulDiv(
_In_ int nNumber,
_In_ int nNumerator,
_In_ int nDenominator
);
在Linux中编程时,是否有等效的便利功能?
答案 0 :(得分:3)
似乎没有Linux的等效功能。
我创建了一个有效的简单内联函数(我还没有用64位编译测试它)
inline int mul_div(int number, int numerator, int denominator) {
long long ret = number;
ret *= numerator;
ret /= denominator;
return (int) ret;
}