【发布时间】:2012-12-22 13:56:41
【问题描述】:
为什么会出现异常
Unhandled exception at 0x00000001 in TestingCOA.exe: 0xC0000005: Access violation (parameters: 0x00000008).
当我尝试使用 4294967295 或更高的数字时。在我的机器上,sizeof double 是 8bytes,它应该能够处理和使用2^64 -1 数字,但它会为 32 位数字生成异常,这是为什么呢?
int main()
{
double n,remainderA;
int AfterDecimal1[64],RemExponent1;
cout<< "Enter number\n";
cin>> n;
remainderA=a-(int)a;
HandleFractionNumber(remainderA,AfterDecimal1,RemExponent1);
}
int HandleFractionNumber(double remainder,int (&Goku)[64],int &RemExponent)
{
int x=0;
for(int i=0;;i++)
{
remainder*=2;
if(remainder>1)
{
remainder-=1;
Goku[x]=1;
x++;
}
else
if(remainder<1)
{
Goku[x]=0;
x++;
}
if(remainder==1)
{
Goku[x]=1;
break;
}
RemExponent=x;
}
【问题讨论】:
-
4294967295 位数?如果您的意思是输入该值作为值,it works fine。