Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔函数总是返回真C++_C++_Function_Boolean_Return Value - Fatal编程技术网

布尔函数总是返回真C++

布尔函数总是返回真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

我有一个调用私有函数isBalanced的公共函数validInfixCheck

如果字符串不是+-*/或数字,isBalanced函数应该返回false。我遇到的问题是isBalanced总是返回true。如果我将所有代码放在同一个文件下,那么逻辑工作正常,但如果我有一个.h和.cpp,则逻辑工作正常

例如,如果输入2^3+4,函数应该返回false,因为^1无效,但现在返回true

g++calculatorMain.cpp CalculatorExp.cpp

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找到的小逻辑错误或简单的代码检查。