c - C中关于 'floating point exception'的简单问题

标签 c floating-point floating-point-exceptions

我有以下 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/

相关文章:

c - 试图找到素数的浮点异常

c - 如何使用 "cat > "将信息写入终端中的 sitin.txt 然后它会输出

PHP:将任何 float 格式化为十进制扩展

floating-point - Unity3d 浮点精度限制

Python time.sleep() 遇到浮点异常

c++ - 使用用户定义的函数查找 '' Perfect Number 时出现浮点异常错误

c - 如何使用scanf读取带空格的文件的每一行?

c - 如何在编译期间检查 C 函数的有效输入?

c - 查找具有特定总和(+ve 或 -ve)的所有连续子集,其中子集可以包含正整数和负整数

c - C 中的隐式类型转换