c++ - 使用指向大于 intMAX 的乘数的指针
问题描述
我有 2 个非常大的数字存储在指针中,例如数字:1234567891234567891234567890 存储为:123 456 789 012 345 678 901 234 567 890。对于这些大数字,我需要进行乘法运算并将其存储在另一个指针中。cijfervakje 是 3 组中的一组。 gg&object 也是 adres 的数字。
我的问题是我没有访问正确的大数字 cijvervakjes,但我不知道如何解决它。
void gg::multi(gg & objectA, gg & objectB){
cijfervakje * helpA = objectA.exit;
cijfervakje* helpB = objectB.exit;
int numberA = 0; int numberB = 0; int carry = 0;
int ans; int length;
gg * helpLijst = new gg;
delete(); //empties the list where the answer will go.
while (helpA != nullptr || helpB != nullptr) {
numberA = 0; numberB = 0;
if(helpA != nullptr) {
numberA = numberA -> info;
helpA = helpA -> vorige;
}
if (helpB != nullptr) {
numberB = helpB -> info;
helpB = helpB -> vorige;
}
ans = numberA * numberB;
carry = 0; //Reset the carry
length = meetLengte(ans);
if(length > k) {
carry = ans / tienTotDeMacht(k); //determine first number.
ans -= carry * tienTotDeMacht(k); /// remove first number
}
addBefore(ans, length);
}
}
class cijfervakje {
public:
cijfervakje* vorige;
int info; //Geeft het getal in dit vakje.
int lengte; //Geeft de lengte van het getal in dit vakje.
cijfervakje* volgende;
};
如果需要更多代码或解释,请询问
解决方案
好吧,你的一些问题没有意义。首先,不要使用指针来做数学。不过,我不认为这实际上是你正在做的事情。
您正在使用指向 cijfervakje 类型对象的指针,但您没有提供该代码,因此我们不知道它的作用。
你知道 C++ 中不同类型的整数吗?您可以使用:
int 通常 4 字节长可能是 4 或 8 字节长,对于高达 180 亿 2^64 的值,通常为 8 字节。
你不能在一个指针中做任何你不能在 long long 中做的事情。
但可能是您使用的课程实际上做了很长的数学运算。如果是这样,我们需要更多地了解该课程以帮助您。
推荐阅读
- windows - 如何写入 BitLocker 加密卷的物理扇区?
- python - Django 路径不起作用,它会将我引导到错误的网站
- javascript - vue watch sublist如何变化或v-model
- javascript - 如何为我的应用获取 Shopify 商店产品的所有数据?
- c# - 当我更新现有数据时 System.Reflection.TargetException ERROR
- excel - Excel / Apache POI:如何转义 Excel 单元格的字符串?
- flutter - 如何使用 Dart::FFI 在颤振中使用 C++ 库?
- php - Foreach 2 var $_POST
- jquery - $,get 方法在 PHP 更新后不读取新数据
- c++ - 按 C++ 中的两个字段对结构的 std::vector 排序