我是“ 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;
}
}
答案 0 :(得分:4)
此:
data.charAt(i) == separator || i == maxIndex
是expression的contextually convertible to bool。该表达式是if statement条件的一部分。 ||
运算符是logical operator OR
。简单地说,您有:
if (A OR B)
在您的情况下,A
是data.charAt(i) == separator
,而B
是i == maxIndex
。我们可以将A
和B
视为操作数。
由于operator precedence,编译器知道A
和B
是什么,以及如何将整个表达式 cut 剪切成组成操作数的较小表达式。这两个表达式中都带有equality operator ==。因此,将separator || i
视为表达式是错误的。
逻辑运算符||
对left to right进行分组,这意味着A
首先被求值,而B
如果A
是true
则可能不被求值。