微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++将负整数与正整数相除会得到正数结果

如何解决C ++将负整数与正整数相除会得到正数结果

我被分配去使用NUCLEO F401RE开发板进行程序设计班的一个小项目。我选择使用Mbed studio进行编程,因为我认为它比在STM32 Cude IDE上编程更容易。但是,我遇到一个问题,有时将负浮点数与正整数相除时,结果却是正数。我决定编写一个程序来测试上述划分。

#include "mbed.h"

// main() runs in its own thread in the OS
int main()
{
    int i = 1;
    while (true) {
        printf("Divided by %d : %f\n",i,-21.837046/i++);
    }
}

这是前40次迭代的结果

Divided by 1 : -21.837047
Divided by 2 : -10.918524
Divided by 3 : -7.279016
Divided by 4 : -5.459262
Divided by 5 : -4.367410
Divided by 6 : -3.639508
Divided by 7 : -3.119579
Divided by 8 : -2.729631
Divided by 9 : -2.426339
Divided by 10 : -2.183705
Divided by 11 : -1.985187
Divided by 12 : -1.819754
Divided by 13 : -1.679773
Divided by 14 : -1.559790
Divided by 15 : -1.455804
Divided by 16 : -1.364816
Divided by 17 : -1.284533
Divided by 18 : -1.213170
Divided by 19 : -1.149319
Divided by 20 : -1.091853
Divided by 21 : -1.039860
Divided by 22 : 0.992594
Divided by 23 : 0.949437
Divided by 24 : 0.909877
Divided by 25 : 0.873482
Divided by 26 : 0.839887
Divided by 27 : 0.808780
Divided by 28 : 0.779895
Divided by 29 : 0.753002
Divided by 30 : 0.727902
Divided by 31 : 0.704421
Divided by 32 : 0.682408
Divided by 33 : 0.661729
Divided by 34 : 0.642267
Divided by 35 : 0.623916
Divided by 36 : 0.606585
Divided by 37 : 0.590191
Divided by 38 : 0.574660
Divided by 39 : 0.559925
Divided by 40 : 0.545927

请注意,从i = 1到i = 21,结果为预期的负数,但是当i> = 22时,结果为正数。有趣的是,当我将分子更改为不同的数字(例如-30)时,结果在i> = 31时从负数转换为正数。不同的分子具有不同的i值,结果在其中转移。

Divided by 1 : -30.000000
Divided by 2 : -15.000000
Divided by 3 : -10.000000
Divided by 4 : -7.500001
Divided by 5 : -6.000000
Divided by 6 : -5.000000
Divided by 7 : -4.285715
Divided by 8 : -3.750001
Divided by 9 : -3.333334
Divided by 10 : -3.000000
Divided by 11 : -2.727273
Divided by 12 : -2.500001
Divided by 13 : -2.307693
Divided by 14 : -2.142858
Divided by 15 : -2.000000
Divided by 16 : -1.875001
Divided by 17 : -1.764706
Divided by 18 : -1.666667
Divided by 19 : -1.578948
Divided by 20 : -1.500001
Divided by 21 : -1.428572
Divided by 22 : -1.363637
Divided by 23 : -1.304348
Divided by 24 : -1.250001
Divided by 25 : -1.200000
Divided by 26 : -1.153847
Divided by 27 : -1.111112
Divided by 28 : -1.071429
Divided by 29 : -1.034483
Divided by 30 : -1.000000
Divided by 31 : 0.967742
Divided by 32 : 0.937501
Divided by 33 : 0.909091
Divided by 34 : 0.882353
Divided by 35 : 0.857143
Divided by 36 : 0.833334
Divided by 37 : 0.810811
Divided by 38 : 0.789474
Divided by 39 : 0.769231
Divided by 40 : 0.750001  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?