• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 关于C语言除0引发的思考

关于C语言除0引发的思考

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言思考题,c语言,c语言入门,c语言入门经典,c语言教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

int main()
{
   int m;
   m=1/0;
   printf("%d",m);
    return 0;
}
</div>
运行完以后程序就会警告:warning: division by zero [-Wdiv-by-zero] 
但是对于浮点数,就没有类似的检查:

int main()
{
   double m;
   m=1.0/0.0;
   printf("%lf",m);
    return 0;
}
</div>
不会有警告或者报错,但是运行完以后会出现这样的值:-1.#IND00,不知所云。于是上网查了一下,原来是这样!

特殊浮点数的含义
1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。
例如,当用 0 除一个整数时便会得到一个1.#INF / inf值;相应的,如果用 0 除一个负整数也会得到 -1.#INF / -inf 值。    -1.#IND / nan:这个的情况更复杂,一般来说,它们来自于任何未定义结果(非法)的浮点数运算。"IND"是 indeterminate 的缩写,而"nan"是 not a number 的缩写。产生这个值的常见例子有:对负数开平方,对负数取对数,0.0/0.0,0.0*∞, ∞/∞ 等。  简而言之,如果遇到 1.#INF / inf,就检查是否发生了运算结果溢出除零,而遇到 1.#IND / nan,就检查是否发生了非法的运算。     

特殊浮点数的判断
很多 C 库都提供了一组函数用来判断一个浮点数是否是无穷大或 NaN。int _isnan(double x) 函数用来判断一个浮点数是否是 NaN,而 int _finite(double x) 用以判断一个浮点数是否是无穷大。

你可能已经注意到了,上面两个函数都是以下划线开头的,因此在可移植性上可能是存在问题的,那么如何实现一个通用的判断版本呢?
首先,对于 Nan,可以用下面的代码实现: 
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于C语言除0引发的思考

相关文章

  • 2017-05-28详解C++编程中对二进制文件的读写操作
  • 2017-05-28C++输出斐波那契数列的两种实现方法
  • 2017-05-28最小生成树算法C语言代码实例
  • 2017-05-28C/C++实现对STORM运行信息查看及控制的方法
  • 2017-05-28C读txt到二维数组的实现方法
  • 2017-05-28深入uCOS中全局变量的使用详解
  • 2017-05-28C++ 动态创建按钮及 按钮的消息响应
  • 2017-05-28C语言打印杨辉三角示例汇总
  • 2017-05-28简单了解C++语言中的二元运算符和赋值运算符
  • 2017-05-28C++对象的动态建立与释放详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 使用C语言编写基于TCP协议的Socket通讯程序实例分享
    • C与C++中结构体的区别
    • C语言编程中对目录进行基本的打开关闭和读取操作详解
    • 详解C++中的一维数组和二维数组
    • C++动态规划之背包问题解决方法
    • C语言实现稀疏矩阵
    • C++ 中 const和static readonly区别
    • VC++实现文件与应用程序关联的方法(注册表修改)
    • bmp 缩放代码(BMP位图任意放大 和缩小)
    • 函数指针与指针函数的学习总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有