-4

我正在编写一段可以处理由 4 个 uint32_t 元素构建的大整数的代码。我创建了一个名为 BigInteger 的类和一些运算符。问题是我得到了一些错误,但我不知道出了什么问题。我已将行后面的错误添加为注释。希望可以有人帮帮我。

提前致谢!

/*The big integer exist of 4 uint32_t elements, the integer is equal to leftLeftleftrightrightRight*/

#include <iostream>
#include <stdint.h>

class BigInteger { 
public:

BigInteger() {

    sign = 0;
    leftLeft = 0;
    left = 0;
    right = 0;
    rightRight = 0;
}

BigInteger(bool inputSign, uint32_t inputLeftLeft, uint32_t inputLeft, uint32_t inputRight, uint32_t inputRightRight){   //ERROR MESSAGE: unknown type name 'uint32_t' 

    sign = inputSign;
    leftLeft = inputLeftLeft;
    left = inputLeft;
    right = inputRight;
    rightRight = inputRightRight;
}

uint32_t leftLeft, left, right, rightRight;  
bool sign;  
}; 

/*This part checks if the two integers are equal*/

bool operator==(BigInteger a, BigInteger b) {
bool c;
if (a.sign == b.sign & a.left == b.left & a.leftLeft == b.leftLeft & a.right == b.right & a.rightRight == b.rightRight){
    c = 1;
} 
else {
    c = 0;
}
return 0;
}

/*This part checks if the integer a is bigger then integer b*/

bool operator>(BigInteger a, BigInteger b) {
bool c;
if (a.leftLeft > b.leftLeft) {
    c = 1;
} 
else if (a.leftLeft == b.leftLeft = 0){   //ERROR MESSSAGE: expression is not assignable
    if (a.left > b.left) {
        c = 1;
    } 
    else if (a.left == b.left = 0){    //ERROR MESSSAGE: expression is not assignable
        if (a.right > b.right) {
            c = 1;
        } 
        else if(a.right == b.right = 0){    //ERROR MESSSAGE: expression is not assignable
            if (a.rightRight > b.rightRight) {
                c = 1;
            } 
            else {
                c = 0;
            }
        }
        else {
            c = 0;
        }
    } 
    else {
        c = 0;
    }
}
else {
    c = 0;
}
return c;
}

/*This part makes the integer negative*/

BigInteger operator -(BigInteger a ){    //ERROR MESSAGE: Non-Aggregate type 'BigInteger' can not be initialized with an initializer list.
bool temp;
if(a.sign==0){
    temp = 1;
}
else{
    temp = 0;
}    
BigInteger c = {temp, a.leftLeft, a.left, a.right, a.rightRight};
return c;
}
4

1 回答 1

0

您没有确切说明您遇到了什么错误,但您添加了一些内嵌注释。最好将确切的错误消息与代码分开发布(并指出它来自哪一行,以及您期望该行做什么)。

看着这个:

if (a.leftLeft == b.leftLeft = 0){

有一个问题。的结果a.LeftLeft == b.leftLefttruefalse。然后您对此进行分配=0,因此您正在尝试true = 0false = 0,这两者都不是有效的分配。您不能分配0给右值。

我不太确定您的代码试图做什么。如果您要检查这两个变量是否都为零,则代码为:

if ( a.leftLeft == 0 && b.leftLeft == 0 )
于 2014-11-14T23:30:22.013 回答