我有以下 C 程序:
#include <stdio.h>
int main()
{
double x=0;
double y=0/x;
if (y==1)
printf("y=1\n");
else
printf("y=%f\n",y);
if (y!=1)
printf("y!=1\n");
else
printf("y=%f\n",y);
return 0;
}
我得到的输出是
y=nan
y!=1
但是当我换行时 双 x = 0; 到 整数 x=0; 输出变为
Floating point exception
谁能解释一下为什么?
最佳答案
您正在用整数运算引起除法 0/0
(这是无效的,并会产生您看到的异常)。无论 y
的类型如何,首先计算的是 0/x
。
当x
声明为double
时,零也被转换为double
,并使用浮点运算执行-点算术。
当 x
声明为 int
时,您将一个 int
0 除以另一个,结果无效。
关于c - C中关于 'floating point exception'的简单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902862/