语法帮助:在 else-if 语句中全为零的行

Syntax Help: Row with all zeros in an else-if Statement

本文关键字:语句 帮助 else-if 语法      更新时间:2023-10-16

我基本上是在尝试编写一个else-if语句,如果行的第一个元素不是-1或行不是全为零,则过滤掉一行。例如

-1 0 0 1 1
0 0 0 0 0 

都会通过

1 0 1 1 1不会

我为此编写的代码部分是

else if (headSetChecked && j!= cols-1) 
{
   if (tempRow[0]!== -1 || tempRow[j]!== 0);
   {
        isScrap=true;
        break;
   }
}

我收到错误 C2059:语法错误:'=' om "if 语句"。我知道我的语法是错误的,但我不确定要把它改成什么。"tempRow"是我正在经历的数组,并过滤掉不符合条件的行。提前感谢您的帮助!

if (tempRow[0]!== -1 || tempRow[j]!== 0);
               ↑                   ↑
  • 使用!=而不是!==
  • 删除if后的;,因为这就像写if (tempRow[0]!== -1 || tempRow[j]!== 0) {},在您的情况下,isScrap = true;break;总是被执行,因为您的if什么都不做。

C++中没有您在语句中写的 !== 这样的运算符

    if (tempRow[0]!== -1 || tempRow[j]!== 0);

因此,编译器将其拆分为两个运算符 != 和 = 并报告错误。

我还想附加选择所需行的条件可以按以下方式编写

if ( tempRow[0] == -1 || 
     std::all_of( tempRow, tempRow + 5, std::bind2nd( std::equal_to<int>(), 0 ) ) )
{
   // the condition has been satisfied
}