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