当前位置: 首页 > 知识库问答 >
问题:

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

巫墨一
2024-09-23

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个不同平台输出结果不一样,是什么原因导致的呢

共有1个答案

百里骏
2024-09-23

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

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

 类似资料:
  • C# CS1061是什么原因? 我写了一个函数模板 我编写此模版方法后尝试传入structT调用中,我确保我的structT中绝对含有name字段,但是编译依然报错: error:CS1061,T未包含name的定义,并且找不到可接受第一个"T"类型参数的可访问方法"name"(是否缺少using指令或程序集引用) 而后我注释了调用部分,即没有任何地方调用我的Test<T>(ref T struc

  • 我想根据Person类中的一些属性过滤掉重复项。我的方法定义如下: 对上述方法的调用如下: 在方法定义中,我可以看到参数可以是函数实现,但上面代码中传递的参数是供应商类型(因为它们返回的是结果,不接受任何参数。但这很好。它是如何工作的?有人能解释吗。

  • 问题内容: 我有一个Java类函数,如下所示 我也有如下相同的Kotlin Class函数 当我从Kotlin代码调用它们时 可以减少Java类函数的调用,但不能减少Kotlin类函数的调用 为什么Kotlin函数调用无法按照Java启用的方式减少冗余的SAM-Constructor? 问题答案: 为什么在kotlin中使用SAM?同时具有对功能的本地支持。 SAM约定在java8中用作不具有本机

  • 成为服务商 PDF版下载 申请条件 拥有已通过认证的如流企业帐号; 具有互联网上部署及发布服务的能力。 注册流程 注册企业,如已有企业跳过此步骤 登录企业,进入设置发起企业认证,如已认证跳过此步骤 企业认证通过后,点击企业后台底部链接进入注册服务商链接 同意服务商协议,即可开通服务商身份。

  • 我正在尝试设置共享内存段以容纳字符串数组。例如,以下数组 string Example[]={“This is”,“An Example”,“of Strings”}; 然后,我尝试调用shmget,以便获得预留适当数量的os共享内存。 通读手册会指出shmget()返回一个“shmid”。同样,什么是shmid,是int、字符串、指针还是某种特殊类型,这是我标识共享内存段的方式吗?另外,如果sh

  • 问题内容: 以下代码在Python2和中给出了不同的输出Python3: Python2 印刷品: Python3 印刷品: 为什么不Python2将函数b内部的变量绑定到函数字符串中的值,而Python3却不这样做呢?如何实现 的行为Python3?我已经尝试过通过字典让全局变量和本地变量在中exec起作用Python3,但到目前为止没有任何效果。 -编辑- 在阅读的答案之后,我用进行了进一步分