所以我有一个类HugeInt
,它存储一个动态整数数组,每个位对应一个小数位(arr[0] = 2^0,arr[1] = 2^1...)。所以我也有这种方法reverse
,它可以反转数字。但主要它给出了两种不同的结果,有人可以帮忙吗?DynArray
是我创建的动态数组类。它只包含一个 int 数组,它根据我们是否添加到数组来调整大小。(不能使用向量)
HugeInt HugeInt::reverse(){
HugeInt hi;
for (int i = 0; i < this->size; i++){
hi.dyn.add(this->dyn[this->size - 1 - i]);
}
return hi;
}
我的打印功能:
void HugeInt::print(){
dyn.print();
}
void DynArray::print(){
for (int i = 0; i < nextIndex; i++){
std::cout << arr[i];
}
}
我的运营商=:
HugeInt& HugeInt::operator=(const HugeInt &b1)
{
this->dyn = b1.dyn;
this->size = b1.size;
return *this;
}
当我运行这个:
int main(int argc, char *argv[])
{
HugeInt hi4("123456");
hi4.print();
cout << endl;
cout << endl;
hi4.reverse().print();
cout << endl;
cout << endl;
hugeInt = hi4.reverse();
hugeInt.print();
}
我得到这些结果:
123456 654321 3854321
为什么最后一个结果与第二个结果不同?我不习惯用 c++ 编码,所以我觉得它可能是我忽略的某种 c++ 东西?
更新:好的,所以我现在完全迷路了。我将我的 reverse() 更改为:
HugeInt HugeInt::reverse()
{
return *this;
}
我的主要是:
int main(int argc, char *argv[])
{
HugeInt hi4("123456");
hi4.reverse().print();
cout << endl;
cout << endl;
hugeInt = hi4.reverse();
hugeInt.print();
}
并得到结果
123456 3223456
ASCII 表上的 32 是“空格”,而 38 是 &,这就是它之前所说的。我迷路了!