c++ - 浮点异常(核心转储)#694457
问题描述
我不太了解 C++,也不明白为什么会出现这个错误:Floating point exception (core dumped)
我不知道我该如何解决。
#include <iostream>
using namespace std;
int main() {
int a = 251;
int b = 0;
while (a > 0) {
a = a / 10;
b++;
}
int c = 2;
int d = 1;
while (c <= b) {
d = d * 10;
c++;
}
cout << d;
int answer = 0;
int f = d;
int g = 1;
float help;
while (b > 0) {
help = (a / (d * g)) *(d / f);
answer = answer + (int)help;
a = a % (d * g);
g = g * (1 / 10);
f = f * (1 / 10);
b--;
}
cout << answer;
return 0;
}
解决方案
与直觉相反,“浮点异常”是您的 CPU 和/或操作系统在您尝试执行整数除以零时抛出的异常。
C++ 使这个操作未定义;您的计算机完全禁止它。
使用调试器单步执行程序时检查所有变量,并记住它1 / 10
是 0,而不是 0.1,因为它是整数除法。(此错误会传播到循环的下一次迭代,您尝试使用此零值作为除数。)
将浮点数除以零的定义更明确,ISTR 将剔除特殊值inf。
推荐阅读
- php - 我无法将照片发送到电报 api (400_Bad_Request)
- python - 尝试创建外键 sqlit3 p 时出现语法错误
- javascript - Javascript 使用 forEach 为多个节点设置动画
- node.js - 从云端获取 Missing Key-Pair-Id 查询参数或 cookie 值错误
- d3.js - D3.js v5 制作 selection.clone 的克隆
- unity3d - 为什么立方体在画布/面板 ui 上是透明的?
- c++ - 为什么使用父指针指向子类?
- java - 百家乐游戏中的错误附加值
- django - Django多对一关系,外键作为文本输入
- java - InteractionDialog 相对于 Dialog 的优势?