当前位置: 首页 > news >正文

C++ -异常之除以 0 问题(整数除以 0 编译时检测、整数除以 0 运行时检测、浮点数除以 0 编译时检测、浮点数除以 0 运行时检测)

一、整数除以 0(编译时检测)

1、演示
#include <iostream>

using namespace std;

int main() {

	int result = 10 / 0;
	cout << result << endl;

	return 0;
}
  • 程序无法运行,输出结果
error C2124: 被零除或对零求模
2、演示解读
  • 编译器在编译时,就能发现 10 / 0​,直接报错,阻止程序生成可执行文件

二、整数除以 0(运行时检测)

1、演示
#include <iostream>

using namespace std;

int main() {

	int a = 10;
	int b = 0;
	int result = a / b;
	cout << result << endl;

	return 0;
}
  • 程序运行崩溃,输出结果
(进程 19836)已退出,代码为 -1073741676 (0xc0000094)。
2、演示解读
  1. 由于 b 是变量,编译器无法在编译时检测除零,程序可以编译通过

  2. 运行时触发异常,导致程序崩溃


三、浮点数除以 0(编译时检测)

1、演示
#include <iostream>

using namespace std;

int main() {

	double result = 10.0 / 0.0;
	cout << result << endl;

	return 0;
}
  • 程序无法运行,输出结果
error C2124: 被零除或对零求模
2、演示解读
  • 编译器在编译时,就能发现 10.0 / 0.0​,直接报错,阻止程序生成可执行文件

四、浮点数除以 0(运行时检测)

1、演示
#include <iostream>

using namespace std;

int main() {
	
	double a = 10.0;
	double b = 0.0;
	double result = a / b;
	cout << result << endl;

	return 0;
}
  • 程序运行结束,输出结果
inf
(进程 1784)已退出,代码为 0 (0x0)。
2、演示解读
  • 浮点数除 0 程序不会崩溃,而是返回特殊值
  1. +inf(正无穷):由 10.0 / 0.0 ​产生

  2. -inf(负无穷):由 -10.0 / 0.0​ 产生

  3. nan(非数字):由 0.0 / 0.0​ 产生

3、补充演示
  1. 负数 / 0.0
#include <iostream>

using namespace std;

int main() {
	
	double a = -10.0;
	double b = 0.0;
	double result = a / b;
	cout << result << endl;

	return 0;
}
  • 程序运行结束,输出结果
-inf
(进程 11416)已退出,代码为 0 (0x0)。
  1. 0.0 / 0.0
#include <iostream>

using namespace std;

int main() {
	
	double a = 0.0;
	double b = 0.0;
	double result = a / b;
	cout << result << endl;

	return 0;
}
  • 程序运行结束,输出结果
nan(ind)
(进程 13408)已退出,代码为 0 (0x0)。

相关文章:

  • 0.机器学习基础
  • SpringBoot整合MinIO快速入门:实现分布式文件存储与管理
  • QTSql全解析:从连接到查询的数据库集成指南
  • LCR 056. 两数之和 IV - 输入二叉搜索树
  • 工业4.0时代,RK3562工控机为何成为智慧工位首选?
  • PostgreSQL的内存管理机制
  • 《Operating System Concepts》阅读笔记:p587-p596
  • 弹簧质点系统(C++实现)
  • 平均标准差策略思路
  • CExercise_07_1指针和数组_1编写函数交换数组中两个下标的元素
  • 谈谈模板方法模式,模板方法模式的应用场景是什么?
  • LLM+js实现大模型对话
  • 判断矩阵A是否可以相似对角化
  • MySQL 在 CentOS 7 环境安装完整步骤
  • 任务调度和安全如何结合
  • WinMerge下载及使用教程(附安装包)
  • AnimateCC基础教学:随机抽取花名册,不能重复
  • Springboot--Kafka客户端参数关键参数的调整方法
  • 【WRF理论第十五期】WPS中输入geogrid二进制格式
  • Johnson算法 流水线问题 java实现
  • 巴基斯坦外长:印巴停火
  • 第四轮伊美核谈判将于11日在阿曼举行
  • 溢价26.3%!保利置业42.4亿元竞得上海杨浦宅地,楼板价80199元/平方米
  • 第32届梅花奖终评启幕,上海京剧院《智取威虎山》满堂彩
  • 夜读丨古代有没有近视眼?
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式