浮点异常

She*_*ith 12 c floating-point

我成功编写了这段代码:

#include <stdio.h>
#include <math.h>
int q;

int main()
{
    srand( time(NULL) );
    int n=3;
    q=ceil(sqrt(n));
    printf("%d\n %d\n", n,q);

    if(n == 2)
        printf("%d\n is prime", n);
    else if(n % 2 == 0.0 || n < 2)
        printf("%d\n is not prime", n);
    else
    {
        int x;
        for(x = 0; x < q; x++){
            if(n % x == 0)
            {
                printf("%d\n is not prime", n);
                return;
            }
            else
                printf("%d\n is prime", n);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的代码时,我收到以下错误:

浮点异常

这个错误意味着什么,我该如何解决?

Mat*_*hen 28

这是由于n % x,当x为0时,你应该让x从2开始.你根本不应该使用浮点数,因为你只需要整数运算.

一般注意事项:

  1. 尝试更好地格式化代码.专注于使用一致的风格.例如,你有一个在if大括号(甚至不是空格)之后立即开始,而另一个在其间有一个换行符.
  2. 除非必要,否则不要使用全局变量.没有理由q成为全球性的.
  3. 不在非void(int)函数中返回没有值.

  • 增加:你得到*浮点异常*,因为你的计算机没有*整数除以0*的特殊情况.一个更好的描述是*算术异常*,但这个用词不当有很长的历史,可能不能再改变了. (6认同)