布尔函数总是返回真C++
我有一个调用私有函数isBalanced的公共函数validInfixCheck 如果字符串不是+-*/或数字,isBalanced函数应该返回false。我遇到的问题是isBalanced总是返回true。如果我将所有代码放在同一个文件下,那么逻辑工作正常,但如果我有一个.h和.cpp,则逻辑工作正常 例如,如果输入2^3+4,函数应该返回false,因为^1无效,但现在返回true g++calculatorMain.cpp CalculatorExp.cpp布尔函数总是返回真C++,c++,function,boolean,return-value,C++,Function,Boolean,Return Value,我有一个调用私有函数isBalanced的公共函数validInfixCheck 如果字符串不是+-*/或数字,isBalanced函数应该返回false。我遇到的问题是isBalanced总是返回true。如果我将所有代码放在同一个文件下,那么逻辑工作正常,但如果我有一个.h和.cpp,则逻辑工作正常 例如,如果输入2^3+4,函数应该返回false,因为^1无效,但现在返回true g++calculatorMain.cpp CalculatorExp.cpp Enter infix exp
Enter infix expression to evaluate:
2^(3+4)
This is what you entered: 2^(3+4)
expression is well formed
calculatorMain.cpp
包括CalculatorExp.h
包括
包括
使用名称空间std;
//原型声明
字符串getInfixExpression;
int main
{
CalculatorExp calc;
字符串输入表达式;
inputExpression=getInfixExpression;
可以考虑一下代码吗
// valid input
bool CalculatorExp::validInfixCheck(string inputExpression)
{
// Checks string is well formed
if(isBalanced(exp))
{
在这里,你的方法有一个参数inputExpression,但是你测试了不相关的字符串exp,看看它是否平衡。所以这可能不会编译,除非你有一个成员exp,它是一个空字符串-在这种情况下,它将测试返回true的空字符串…请做一个测试。这里有一堆代码可能没有当你使用调试器一次执行一行isBalanced函数,检查它使用的所有变量的值,观察它们是如何变化的,以及函数是如何做出逻辑决策的,你对函数的运行方式做了哪些观察你的调试器会告诉你,确切地说,知道如何有效地使用调试器是每个C++开发者所需的技能。你可以很容易地找出在那里发生的一切,完全是你自己,仅仅通过使用你已经拥有的调试器。你确定问题在哪里吗?这是你的FU。与测试工具隔离的nction和我自己版本的isBalanced可以进行比较。它们都产生相同的结果,并且结果与您的示例不一致。我建议将您的程序分成更小的隔离案例,并分别进行测试。然后,当您发现不起作用的部分时,请在调试器中逐步检查这些部分以进行比较找出原因。balancedSoFar=false;break;我想您只想在这里返回false。balancedSoFar变量在下一个变量中设置为true。因此,在下面的if中返回true。逻辑有缺陷。我投票结束这个问题,因为原因是一个很容易通过debu找到的小逻辑错误或简单的代码检查。