[英]Adding binary numbers in C
我收到錯誤“二進制 + 的操作數無效(有 int* 和 int*)”,我不知道為什么它向我拋出這個錯誤。 我將如何添加 2 個數組的數組元素。 注意兩個數組的大小相同。
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_complement
和second_complement
都是整數指針數組。
您需要在添加之前取消引用它們 -
remainder = (*first_complement2[count]) + (*second_compelment[count]) + carryover;
將int *
傳遞給需要整數指針或int **
數組的函數時,您沒有收到任何警告或錯誤嗎?
int* complement2Array1 = signed2complement2(signedIntArray1, j); // it is an int *
complement2Array1
和complement2array2
必須是int **
類型或者是int pointers
數組。
或者像@alk Sir 建議的那樣簡單,使用int *
而不是int **
。
這個
int* complement2_add(int* first_complement2[], int* second_compelment[], int size){
如果等於
int* complement2_add(int ** first_complement2, int ** second_compelment, int size){
從您使用first_complement2
和second_compelment
的方式以及您調用complement2_add()
second_compelment
complement2_add()
的方式second_compelment
,這是錯誤的。
看來你想要
int* complement2_add(int * first_complement2, int * second_compelment, int size){
在使用之前還要添加原型:
int* complement2_add(int * first_complement2, int * second_compelment, int size);
... somefunc(...)
{
...
int* add1 = complement_2_add(complement2Array1, complement2Array2, j);
...
}
int* complement2_add(int* first_complement2, int* second_compelment, int size)
{
int count = 0,remainder = 0, carryover = 0;
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.