C++除数是0/0.0时的结果

在《算法竞赛入门经典》书上看到这个问题,于是做了个小试验,结果出乎意料,故记录如下。

注:实验为OSX系统下,使用g++编译器进行。其它编译器未测试。

整形除法

除数为0时编译器警告,结果错误且不可预测,多次执行每次结果不同。

代码

#include <stdio.h>
#include <math.h>

int main(int argc, char const *argv[])
{
  printf("%d\n", 9/0);
  return 0;
}

编译过程中的警告

/Users/test/code/algorithms/aoapc-bac2nd/ch1/playground.cpp:6:19: warning: division by zero is undefined [-Wdivision-by-zero]
  printf("%d\n", 9/0);
                  ^~
1 warning generated.

结果

1451766616

浮点型除法

  • 若被除数为0,则结果为nan
  • 若被除数为非0,则结果为inf
#include <stdio.h>
#include <math.h>

int main(int argc, char const *argv[])
{
  printf("%f\n", 1.0/0.0);     // inf
  printf("%f\n", 0.0/0.0);     // nan
  // 若除号两边任意一个为浮点数,则计算时int将被隐式转化为浮点数进行计算,所以如下两例同上面两个例子
  printf("%f\n", 1.0/0);       // inf
  printf("%f\n", 0/0.0);       // nan
  return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 JavaScript 语言? JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script...
    oWSQo阅读 1,834评论 0 1
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,479评论 8 114
  • 最近在写个性化推荐的论文,经常用到Python来处理数据,被pandas和numpy中的数据选取和索引问题绕的比较...
    shuhanrainbow阅读 4,609评论 6 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 有多少人,生活的日子不够诗意,多了焦躁,缺少行云流水的从容淡定。面对生活中的不如意,有人抱怨,有人暴躁,所以我们羡...
    自由在路上阅读 1,029评论 0 11