浮点异常问题
Trouble with Floating Point Exception
我已经尝试过调试器和 Catch 和抛出,尽管我承认我对两者都不满意。但是我无法在我的程序中找到浮点异常的原因。奇怪的是它非常适合数字 <= 35。除此之外,它还引发了例外。问题出在哪里?
int fibo(int n)
{ if(n==0 || n==1)
return 1;
int p=1;
while(n>1)
p*=(n--);
return p;
}
int main()
{ int T;
int N, M;
cin>>T;
for(int i=0; i<T; i++)
{
cin>>N>>M;
int cnt=1;
int ones=N, twos=0;
if(ones==1 && M==1)
{ cout<<"CORRECT"<<endl;
continue;
}
else if(ones==1 && M!=1)
{ cout<<"INCORRECT"<<endl;
continue;
}
while(ones>=2)
{
ones-=2;
twos++;
cnt+= fibo(ones+twos)/( fibo(ones) * fibo(twos) );
}
cout<<cnt<<endl;
int tmp=0;
while(cnt>0)
{ if(cnt%2 == 1)
tmp++;
cnt/=2;
}
if( tmp==M )
cout<<"CORRECT"<<endl;
else
cout<<"INCORRECT"<<endl;
}
system("pause");
return 0;
}
多谢。
"浮点异常"不是C++异常。 try
和catch
不会帮助你。这是不幸的术语,但它来自操作系统,更像是"崩溃"。
更令人困惑的是,当尝试执行整数除以零时,您可以在某些平台上看到它。我还没有解开你的代码,但添加大量的调试输出并跟踪变量的值,并找到你除以零的位置,因为,嗯,你在某个地方做这件事。:)
我唯一能看到的候选人是:
cnt+= fibo(ones+twos)/( fibo(ones) * fibo(twos) )
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^
相关文章:
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- 发生此错误:在0x0F2BFB7C(基于.dll)时引发异常 尝试更改大小是问题吗?
- 关于异常继承中的语法的问题
- 在使用 In Order 遍历成员函数时引发异常(堆栈溢出)时出现问题
- 存在内存访问异常,但我不确定我的代码中出了什么问题
- Catch2 迫使我在异常中添加对 std::string 的强制转换,这会产生其他问题吗?
- (SDL 渲染问题)C++ 引发异常:读取访问冲突.这是无效的
- PCL 和 CMake 的问题:链接时未定义统计异常值删除
- 值传递、异常/断言和类设计.批评/问题
- 在使用SFML时,我会得到记忆或出于界限异常,这是什么问题
- 此C 异常语法有什么问题(std :: runtime_error)
- 递归中的异常问题(8皇后问题)
- 如何避免意外异常导致的问题
- 为什么我们需要 RAII 来解决异常安全问题
- 异常处理问题,原因
- 如何通过引用捕获异常来解决局部变量问题
- 捕获琐碎的提升异常的奇怪问题
- 关于 swap() 操作的异常安全 - 这有什么问题?
- 关于异常规范和应用程序设计的问题
- C++ - 关于引发异常的几个问题