繁体   English   中英

C ++浮点异常

[英]c++ floating point exception

我是针对Euler项目问题​​5这样做的,但是由于某种原因,我得到了一个浮点异常:

#include <iostream>
using namespace std;

int main ()
{
    long num;
    bool isnum = false;
    long i = 20;

    while (isnum == false)
    {
        for (int j = 0; j <= 20; j++)
        {
            if (i % j != 0)
            {
                break;
            }
            else
            {
                num = i;
                isnum = true;
            }
        }
        i+=20;
    }
    cout << num << endl;
    return 0;
}

我不明白的是,当我对输出非整数的代码不执行任何操作时,怎么会有浮点异常。

我%j

因为j初始化为0,所以这里被零除。

根据5.6 [expr.mul]第4段,由于您使用i % j并将j初始化为零,因此您将获得未定义的行为:

...如果/或%的第二个操作数为零,则行为不确定。 ...

例如,这可能会产生浮点异常。 我也会导致更糟的事情发生。

您正在for循环的第一次迭代中使用j == 0来执行i % j

因此浮点异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM