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