#define TO_SIGNED(x) ((signed)(x))
class BigInteger{
protected:
unsigned* array;
BigInteger(unsigned*const theArray){
array = theArray;
}
inline unsigned* getArray(){
if(this == BigIntegerNull)
#ifdef _EXCEPTION_H_
throw NullPointerException();
#else
return NullArray;
#endif
return array;
}
BigInteger expand(unsigned newSize, bool extendSign){
if(getArray() == NullArray){
BigInteger n(NullArray);
return n;
}
if(newSize <= array[0]) return *(new BigInteger(*this));
BigInteger nbi(new unsigned[newSize+1]);
register unsigned i;
for(i = 0; i <= array[0]; i++) nbi.array[i] = array[i];
if(extendSign && TO_SIGNED(array[array[0]]) < 0){
for(; i <= newSize; i++) nbi.array[i] = -1;
}else{
for(; i <= newSize; i++) nbi.array[i] = 0;
}
return nbi;
}
public:
static BigInteger*const BigIntegerNull;
static unsigned*const NullArray;
BigInteger(const BigInteger& origin){
#ifdef _EXCEPTION_H_
if(origin.getArray() == NullArray)
throw NullPointerException();
#endif
register unsigned size = origin.array[0]+1;
array = new unsigned[size];
do{
--size;
array[size] = origin.array[size];
}while(size > 0);
}
BigInteger _xor(BigInteger bi, bool extendSign){
if(getArray() == NullArray || bi.getArray() == NullArray){
BigInteger n(NullArray);
return n;
}
register unsigned i;
if(array[0] <= bi.array[0]){
for(i = array[0]; i > 0; i--) array[i] &= bi.array[i];
}else{
for(i = 1; i <= bi.array[0]; i++){
array[i] ^= bi.array[i];
}
if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
for(; i <= array[0]; i++){
array[i] = -1; // or -1
}
}
}
return *this;
}
BigInteger xor(BigInteger bi, bool extendSign){ // 编译器指示错误的行
BigInteger n(NullArray);
if(getArray() == NullArray || bi.getArray() == NullArray){
return n;
}
register unsigned i;
if(array[0] <= bi.array[0]){
n = this->expand(bi.array[0], extendSign);
for(i = array[0]; i > 0; i--){
n.array[i] ^= bi.array[i];
}
if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
for(; i <= bi.array[0]; i++){
n.array[i] = ~bi.array[i]; // xor -1
}
}else{
for(; i <= bi.array[0]; i++){
n.array[i] = bi.array[i]; // xor 0
}
}
}else{
n = *(new BigInteger(*this));
for(i = 1; i <= bi.array[0]; i++){
n.array[i] ^= bi.array[i];
}
if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
for(; i <= array[0]; i++){
n.array[i] = ~array[i]; // xor -1
}
}
}
return n;
}
};
BigInteger*const BigInteger::BigIntegerNull = reinterpret_cast<BigInteger*>(0);
unsigned*const BigInteger::NullArray = reinterpret_cast<unsigned*>(0);
77: error: expected unqualified-id before '^' token
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 19:53关注
该回答引用ChatGPT-3.5
这个错误通常是由于在定义函数之外使用了无效的符号(“^”符号),可能是由于缺少必需的头文件或定义,或者代码的上下文缺少所需的内容。从代码中看,您的问题可能是由于在某个位置未定义的符号“BigIntegerNull”或“NullArray”引起的。您可以尝试在函数之前添加这些符号的定义,或者检查代码的其他部分是否已定义这些符号。
此外,请注意,如果这个代码段不是作为类的一部分而是作为一个独立的函数,那么编译器可能会认为“^”符号是位异或操作符,而不是指针符号。在这种情况下,您可以尝试使用括号明确指定符号的优先级,例如使用“( * )”来指定指针,例如“( *bi)”而不是“bi^”。
解决 无用评论 打赏 举报
悬赏问题
- ¥100 求数学坐标画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站