c - C语言中的二进制数相加

标签 c arrays pointers binary

我收到错误“二进制 + 无效操作数(有 int* 和 int*)”,我不知道为什么它会抛出这个错误。我将如何添加两个数组的数组元素。请注意,两个数组的大小相同。

int* complement2_add(int* first_complement2[], int* second_compelment[], int size){
int count = 0,remainder = 0, carryover = 0;

int* cAdd = (int*)malloc(size*sizeof(int));


for(count = size-1; count >= 0; count--){
    remainder = first_complement2[count] + second_compelment[count] + carryover;

    if(remainder == 1){
        cAdd[count] = 1;
        carryover = 0;
    }
    else if(remainder == 2){
        cAdd[count] = 0;
        carryover = 1;
    }
    else if(remainder == 3){
        cAdd[count] = 1;
        carryover = 1;
    }
    else if(remainder == 0){
        cAdd[count] =0;
        carryover = 0;
    }

}
if(carryover == 1){
    cAdd[count] = 1;
}
return cAdd;

}

然后我像这样调用 main 中的函数。

    int* add1 = complement_2_add(complement2Array1, complement2Array2, j);

Complement2Array1 和 Complement2Array2 定义相同。

int* complement2Array1 = signed2complement2(signedIntArray1, j);

signed2complement2 定义为。

int* signed2complement2(int signed_binary[], int size){
  int i = 0;
  int* complemt2Array = (int*)malloc(size*sizeof(int));
  int flipflag = 0;
  for(i = size-1; i>=0;i-- ){
    if(flipflag == 0){
        complemt2Array[i] = signed_binary[i];
        if(signed_binary[i] == 1){
            flipflag = 1;
        }
    }
    else{
        complemt2Array[i] = signed_binary[i] == 0?1:0;
    }
  }
  return complemt2Array;
}

最佳答案

  remainder = first_complement2[count] + second_compelment[count] + carryover;

在此first_complement2[count] second_compelment[count] 都是整数指针。

因为 first_complementsecond_complement 都是整数指针数组。

您需要在添加之前取消引用它们 -

remainder = (*first_complement2[count]) + (*second_compelment[count]) + carryover;

编辑

int * 传递给需要整数指针数组或 int ** 的函数时,您没有收到任何警告或错误吗?

int* complement2Array1 = signed2complement2(signedIntArray1, j);    // it is an int *

complement2Array1complement2array2 必须为 int ** 类型或为 int 指针 数组。

或者像 @alk Sir 建议的那样简单,使用 int * 而不是 int **

关于c - C语言中的二进制数相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32949142/

相关文章:

javascript - 如何将 Canvas 像素数组传递给 C++ 代码并将其保存为 jpeg?

c - C 中的数字计数

arrays - Invoke-WebRequest : Cannot bind parameter 'Uri' . 无法转换“@{

python - 列表与 int 分配 - "Every variable is a pointer"

c++ - 有没有办法为 NUMA 中的数据分配特定的内存?

c++ - 单个文件上两个 C FILE* 流的一致性

C删除数组元素

python - 用条件替换数组中的值

c++ - 是否需要在析构函数中删除指针?

c - 如何修复从 C 中的函数传递指针的段错误?