比较字符总是返回true

比较字符总是返回true

问题描述:

为什么hasParenthesis总是评估为true?比较字符总是返回true

bool hasParenthesis = false ; 
for(int i = 0; i < 255 && statement[i] != ';'; i++) 
{ 
    if(statement[i] == '(' || statement[i] == ')') 
    { 
    hasParenthesis = true; 
    break; 
    } 
} 
+0

你不是hasParenthesis每次围绕环路重置为false .... – OmnipotentEntity

+0

,什么是语句值? –

+0

@OmnipotentEntity他已经在那里休息了,所以一旦碰到了if块,就没有更多的循环了。 –

当for循环开始时,将hasParenthesis设置为false。用你目前所拥有的,一旦布尔值为真,当循环重新迭代时它总是真实的。因此,从布尔型假开始执行for循环逻辑。

这里是一个简化的骨架:

bool hasParenthesis; 
for(){ 
    hasParenthesis = false; 

    if(){ 
     hasParenthesis = true; 
    } 
} 
+0

谢谢。它的作品:) –

+0

没问题,@ jm-。如果它有帮助,你应该将其标记为已回答;)对于谁低估了答案,有什么不对? – Coderchu

+0

只需在我的答案旁边勾上白色复选标记:D – Coderchu

服务员,如果我的循环是一个!

假设statementstd::string,你就可以摆脱两个:

auto pos = statement.find_first_of(";()"); 
bool hasParenthesis = (pos != std::string::npos) && (statement[pos] != ';');