Windows API 中的MulDiv便利函数等效于(a*b)/c,但它将中间结果存储a*b 在一个 64 位变量中,然后再除以它,c以避免a*b大于MAX_INT但(a*b)/c不是的整数溢出。
WINBASEAPI
int
WINAPI
MulDiv(
_In_ int nNumber,
_In_ int nNumerator,
_In_ int nDenominator
);
Run Code Online (Sandbox Code Playgroud)
在 Linux 中编程时,是否有等效的便利功能?
Linux 似乎没有等效的功能。
我创建了一个简单的内联函数,它可以工作(不过我还没有用 64 位编译测试过它)
inline int mul_div(int number, int numerator, int denominator) {
long long ret = number;
ret *= numerator;
ret /= denominator;
return (int) ret;
}
Run Code Online (Sandbox Code Playgroud)