c中的算术不好

时间:2017-01-14 14:37:15

标签: c arithmetic-expressions

我正在用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);

    }
}

1 个答案:

答案 0 :(得分:1)

此表达式中i的初始值为0

a = 1 / i + 1;

由于i具有int类型,因此您将整数除以0进行求值,从而调用未定义的行为。

这有点误导,这会导致消息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;
}