首页 > 解决方案 > 浮点异常(核心转储)#694457

问题描述

我不太了解 C++,也不明白为什么会出现这个错误:Floating point exception (core dumped)

我不知道我该如何解决。

#include <iostream>

using namespace std;

int main() {

    int a = 251;
    int b = 0;

    while (a > 0) {
        a = a / 10;
        b++;
    }
    int c = 2;
    int d = 1;
    while (c <= b) {
        d = d * 10;
        c++;
    }
    cout << d;
    int answer = 0;
    int f = d;
    int g = 1;
    float help;
    while (b > 0) {
        help = (a / (d * g)) *(d / f);
        answer = answer + (int)help;
        a = a % (d * g);
        g = g * (1 / 10);
        f = f * (1 / 10);
        b--;
    }

    cout << answer;

    return 0;
}

标签: c++

解决方案


与直觉相反,“浮点异常”是您的 CPU 和/或操作系统在您尝试执行整数除以零时抛出的异常。

C++ 使这个操作未定义;您的计算机完全禁止它。

使用调试器单步执行程序时检查所有变量,并记住它1 / 10是 0,而不是 0.1,因为它是整数除法。(此错误会传播到循环的下一次迭代,您尝试使用此零值作为除数。)

将浮点数除以零的定义更明确,ISTR 将剔除特殊值inf


推荐阅读