此代码“ seperature | | i”的一部分是什么意思?

时间:2018-08-16 07:18:05

标签: c++

我是“ C ++”的新手,所以我不理解下面的代码部分。 就像“ Hello World”一样,“数据”是字符串,并且分隔符等于此字符“ |”。那么这行"data.charAt(i) == separator || i == maxIndex"

是什么意思
int maxIndex = data.length() - 1;
  for (int i = 0; i <= maxIndex && found <= index; i++) {
    if (data.charAt(i) == separator || i == maxIndex) {
      found++;
      strIndex[0] = strIndex[1] + 1;
      strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }

1 个答案:

答案 0 :(得分:4)

此:

data.charAt(i) == separator || i == maxIndex

expressioncontextually convertible to bool。该表达式是if statement条件的一部分。 ||运算符是logical operator OR。简单地说,您有:

if (A OR B)

在您的情况下,Adata.charAt(i) == separator,而Bi == maxIndex。我们可以将AB视为操作数。

由于operator precedence,编译器知道AB是什么,以及如何将整个表达式 cut 剪切成组成操作数的较小表达式。这两个表达式中都带有equality operator ==。因此,将separator || i视为表达式是错误的。

逻辑运算符||left to right进行分组,这意味着A首先被求值,而B如果Atrue则可能不被求值。