exc_bad_access(code = 1,address = 0x1f400000010)

时间:2013-04-13 13:53:03

标签: c++ xcode

在使用c ++进行编程时,我对XCode有疑问,任何帮助都会受到欢迎:)

#include "TFloat.h"
#include <math.h>

TFloat::TFloat()
{
_valor = 0.0;
set_precision(52);
recortar();
}

TFloat::TFloat(size_t t)
{
_valor = 0.0;
set_precision(t);
recortar();
}

TFloat::TFloat(int i, size_t t)
{
_valor = (double) i;
set_precision(t);
recortar();
}

TFloat::TFloat(float f, size_t t)
{
_valor = (double) f;
set_precision(t);
recortar();
}

TFloat::TFloat(double f, size_t t)
{
_valor = f;
set_precision(t);
recortar();
}

double TFloat::dbl() const
{
return _valor;
}

void  TFloat::operator =(const TFloat& f)
{
_valor = f._valor;
_t = f._t;
}

void  TFloat::operator =(const double& f)
{
_valor = f;
recortar();
}

bool  TFloat::operator ==(const TFloat& f) const
{
return (_valor == f._valor);
}

TFloat TFloat::operator + (const TFloat& f) const
{
double result = _valor + f._valor;
    return TFloat(result, _t);
}

TFloat TFloat::operator - (const TFloat& f) const
{
double result = _valor - f._valor;
return TFloat(result, _t);
}

TFloat TFloat::operator * (const TFloat& f) const
{
double result = _valor * f._valor;
    return TFloat(result, _t);
}

TFloat TFloat::operator / (const TFloat& f) const
{
double result = _valor / f._valor;
return TFloat(result, _t);
}

TFloat TFloat::exponencial() const
{
double result = exp(_valor);
return TFloat(result, _t);
}

TFloat TFloat::operator+ (const double& f) const
{
return this->operator+(TFloat(f,_t));
}

TFloat TFloat::operator- (const double& f) const
{
return this->operator-(TFloat(f,_t));
}

TFloat TFloat::operator* (const double& f) const
{
return this->operator*(TFloat(f,_t));
}

TFloat TFloat::operator/(const double& f) const
{
return this->operator/(TFloat(f,_t));
}



void TFloat::recortar()
{
bitset<64> * bits;
bits = (bitset<64>*) &_valor;

for(size_t i = 0 ; i < (52 - _t); i++ )
{
    (*bits)[i] = 0;
}
}

在此功能中使用“recortar”时出现问题:

TFloat::TFloat(double f, size_t t)
{
    _valor = f;
    set_precision(t);
    recortar();
}

当我通过这样做从main.cpp调用它时:

size_t _precision = precision(51);
TFloat Beta(0.0,_precision);

我认为这是一个记忆问题,但我不知道如何解决它。谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您尝试使用此代码实现的目标是什么? 如前所述

bits = (bitset<64>*) &_valor;

无法工作,您可以使用包含0和1的字符串初始化bitset,也可以使用包含位的无符号long来初始化bitset。在任何情况下,使用浮点值进行位操作都没有多大意义 Here很好地解释了不同的演员如何工作以及如何使用和不能使用。