C:这个浮点异常的原因是什么?

时间:2017-11-28 22:40:57

标签: c

我刚刚开始学习C并尝试创建一个代码来查找5位数字,如果它乘以4则会产生5位数字的反转。这是我的代码:

#include <stdio.h>

int main(void){
    int i, result, modulo, div1, div2;
    modulo = 10;
    for (i = 12345; i < 99999; i++){
        result = i*4;
        div1 = 10000;
        div2 = 1;
        while ((i/div1)%modulo == (result/div2)%modulo){
            div1 /= 10;
            div2 *= 10;
            if (div2 == 100000){
                printf("%d", i);
            } 
        }
    }
}

我得到了

  

浮点异常

我认为问题出现在while语句中,但我不知道原因是什么。任何人都可以解释我的错误是什么?非常感谢。

1 个答案:

答案 0 :(得分:2)

原因是你在div1 / = 10的行中除以0。你看,div1是一个整数,所以每次除以10,它就会变小​​,经过多次迭代后,几千个它们,得到0.除以0会导致问题。 在代码周围放一些来检查它是否为0,看看如果它是什么你会做什么。