【发布时间】:2013-03-18 16:39:05
【问题描述】:
此代码在 100000 之前运行良好,但如果您输入 1000000,它将开始给出错误 C++ 0xC0000094: Integer division by zero。我确信这与浮点有关。我尝试了 (/fp:precise)、(/fp:strict)、(/fp:except) 和 (/fp:except-) 的所有组合,但没有得到肯定的结果。
#include "stdafx.h"
#include "time.h"
#include "math.h"
#include "iostream"
#define unlikely(x)(x)
int main()
{
using namespace std;
begin:
int k;
cout<<"Please enter the nth prime you want: ";
cin>>k;
int cloc=clock();
int*p;p=new int [k];
int i,j,v,n=0;
for(p[0]=2,i=3;n<k-1;i+=2)
for(j=1;unlikely((v=p[j],pow(v,2)>i))?!(p[++n]=i):(i%v);++j);
cout <<"The "<<k<<"th prime is "<<p[n]<<"\nIt took me "<<clock()-cloc<<" milliseconds to find your prime.\n";
goto begin;
}
【问题讨论】:
-
说真的?!!!您能否格式化您的代码,使其至少具有可读性?
-
除以 0 会导致不定式结果。即,您不能将数字除以 0。(en.wikipedia.org/wiki/Division_by_zero)
-
抱歉,我就是这样将它保存在控制台中的。我希望现在更清楚了。 @Mylleranton 该操作与将某物除为零无关。
-
@Flashbond 无法阅读代码,我看到了“除零”标签,所以我只写了我的评论。对不起。
-
大约十亿次使用调试器。如果不能调试,就不能开发软件。
标签: divide-by-zero