c中的错误算术

Bad arithmetic in c

我正在用 C 编写一个更长的程序,当我尝试 运行 它时,我得到了 floating point exception error : 8。这只是一段代码,因此我在主程序中遇到错误。为什么在 a = (1/i+1) 时出现错误?

int main()
{
    double a;
    for(int i = 0; i < 10; i++)
    {
        a = 1/i+1;
        printf("a = %lf",a);

    }
}

i的初始值为0在这个表达式中:

a = 1 / i + 1;

由于 i 具有 int 类型,您正在计算除以零的整数,这会调用未定义的行为。

这导致消息 floating point exception error : 8 有点误导,但与未定义行为的概念完全兼容。

请注意,您需要更改表达式以强制计算为浮点数:

#include <stdio.h>

int main(void) {
    for (int i = 0; i < 10; i++) {
        double a = 1.0 / i + 1;
        printf("a = %f\n", a);
    }
    return 0;
}