为什么hasParenthesis
总是评估为真?
bool hasParenthesis = false ;
for(int i = 0; i < 255 && statement[i] != ';'; i++)
{
if(statement[i] == '(' || statement[i] == ')')
{
hasParenthesis = true;
break;
}
}
答案 0 :(得分:2)
服务员,在我的循环中有一个if!
假设statement
是std::string
,您可以摆脱两者:
auto pos = statement.find_first_of(";()");
bool hasParenthesis = (pos != std::string::npos) && (statement[pos] != ';');
答案 1 :(得分:1)
当for循环开始时,将hasParenthesis
设置为false。使用你现在拥有的东西,一旦布尔值为真,当循环重新迭代时它总是成立。因此,使用布尔值false启动for循环逻辑。
这是一个简化的骨架:
bool hasParenthesis;
for(){
hasParenthesis = false;
if(){
hasParenthesis = true;
}
}