二维数组C中的按位|

二维数组C中的按位|,c,arrays,bitwise-operators,C,Arrays,Bitwise Operators,我很长时间没用C了 我有一个2d数组,其中每个元素都是1或0。我想知道每行是否有1个。我正在这样做: for (row = xa; row < 50; row++) { // need to know first if there is any '1' in the next line if (|schemaArray[row] == 1) { printf("1 found in row %d\n",row ); } } 您必须遍历该行的所有列,以

我很长时间没用C了

我有一个2d数组,其中每个元素都是1或0。我想知道每行是否有1个。我正在这样做:

for (row = xa; row < 50; row++) { 
// need to know first if there is any '1' in the next line
    if (|schemaArray[row] == 1) {
        printf("1 found in row %d\n",row );
    }  
}

您必须遍历该行的所有列,以检查是否存在
1

示例代码:

for (int row = xa; row < 50; row++ ) {
  int bIsOne = 0;
  for (int i = 0;i < col_size && !bIsOne; i++ ) {
    bIsOne = bIsOne | schemaArray[row][i];
  }
  if( bIsOne )
    printf("1 found in row %d\n",row );
}
在函数中,可以将位图用作:

for (int i = 0; i < row_count; i++) {
  if( bitMapSchemaArray[i] )
    printf("There is a 1 in %d row\n", i+1);
}
for(int i=0;i

但是,假设我们使用的是64位整数数组,那么在
2-D
数组中最多只能有64列。当然,您也可以通过使用
ceil(column\u count)/64
64位整数来推断它有超过64列。在这种情况下,按位或每列检查累积结果是否仍然为非零。

您必须迭代该行的所有列以检查是否存在
1

示例代码:

for (int row = xa; row < 50; row++ ) {
  int bIsOne = 0;
  for (int i = 0;i < col_size && !bIsOne; i++ ) {
    bIsOne = bIsOne | schemaArray[row][i];
  }
  if( bIsOne )
    printf("1 found in row %d\n",row );
}
在函数中,可以将位图用作:

for (int i = 0; i < row_count; i++) {
  if( bitMapSchemaArray[i] )
    printf("There is a 1 in %d row\n", i+1);
}
for(int i=0;i

但是,假设我们使用的是64位整数数组,那么在
2-D
数组中最多只能有64列。当然,您也可以通过使用
ceil(column\u count)/64
64位整数来推断它有超过64列。在这种情况下,按位或每列检查累积结果是否仍然为非零。

简单只需迭代整行并找出答案

for (row = 0; row < 50; row++) { 
    for (col= 0; row < 50; col++) {
        if (schemaArray[row][col] == 1){
            printf("1 found in row %d\n",row );
            break;
        }
    }
}
(行=0;行<50;行++){ 用于(列=0;行<50;列++){ if(schemaArray[row][col]==1){ printf(“第%d行中找到了1\n行); 打破 } } }
简单只需在整行上迭代并找出

for (row = 0; row < 50; row++) { 
    for (col= 0; row < 50; col++) {
        if (schemaArray[row][col] == 1){
            printf("1 found in row %d\n",row );
            break;
        }
    }
}
(行=0;行<50;行++){ 用于(列=0;行<50;列++){ if(schemaArray[row][col]==1){ printf(“第%d行中找到了1\n行); 打破 } } }
if(| schemaArray[row]==1)条件无法编译,因此编译器会告诉您使用它是错误的。但是,它不会告诉您如何正确使用它。编译器会告诉您使用它是错误的,因为if(| schemaArray[row]==1)条件无法编译。不过,它不会告诉你如何正确使用它。