c++ - 是否有与 Linux 的 MulDiv 等效的功能?

标签 c++ linux winapi

MulDiv Windows API 中的便利函数等同于(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
    );

在 Linux 中编程时,是否有等效的便捷功能?

最佳答案

Linux 好像没有对应的功能

我创建了一个简单的内联函数(尽管我还没有用 64 位编译测试过它)

inline int mul_div(int number, int numerator, int denominator) {
    long long ret = number;
    ret *= numerator;
    ret /= denominator;
    return (int) ret;
}

关于c++ - 是否有与 Linux 的 MulDiv 等效的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872499/

相关文章:

c++ - c++中获取路由表的可移植方式

c++ - 嵌套 if 循环跳转到第二个,即使第一个不是真的

linux - CX_Freeze 和 guiqwt 适用于 Windows,不适用于 Linux

c++ - 在 C/C++ 中使用字符串——[ ] 在 LPCTSTR 之后

c++ - 我应该把我的功能代码放在哪里

c++ - 无法将 ‘std::string’ 转换为‘const char*

linux - 何时以及为何应将 WNOHANG 与 waitpid() 一起使用?

c - 直接从无窗口的 Linux 终端启动 OpenGL 应用程序

winapi - Win32 : Calculate Thread CPU Utilization in a Multi-Core/Multi-Processor System

c - MinGW 上函数 'getaddrinfo' 的隐式声明