c++ remquo 求余数和商的函数为啥16除以2,在linux环境下商为0?

新手上路,请多包涵

c++ remquo 求余数和商的函数为啥16除以2,在linux环境下商为0?
相同代码 windows环境 remquo 函数返回的商符合预期,16除以2商为8,虚拟机ubuntu环境 remquo函数返回的商不符合预期,16除以2商为0

2个平台运行结果
windows平台在vscode上跑,商的结果是8
windows平台输出
在linux环境ubuntu20.04 直接用g++跑结果是0, g++版本是9.4.0
linux平台输出

下面是代码

#include <iostream>
#include <cmath>

int main() {
    float a = 16;
    float b = 2;
    int quo = 0;
    float y = remquo(a, b,&quo);
    std::cout << "quo:" << quo << std::endl;
    return 0;
}

有没有大佬能帮忙解释这其中的原因,2个不同平台输出结果不一样,是什么原因导致的呢

阅读 900
1 个回答

remquo 得到的 quo 并不是商,而是商的符号位与最低 n 位 ( n ≥ 3 ) 。具体 n 是多少是由编译器 / 标准函数库决定的。所以不同的编译器会不同。

8 的最后三位正好是 0 。所以只保留 3 位的话就是 0 。如果保留了更多的话,就会是 8 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题