将布尔值传递给另一个函数无法正常工作?

时间:2018-11-26 19:17:08

标签: c++ boolean

对于C ++来说是很新的东西,仅使用了几天。我正在尝试编写一个简单的控制台计算器,要求用户输入Y或N来确认打印的结果是正确的。

我调用了一个函数,该函数要求用户输入Y / N的字符,然后根据输入的内容将其作为布尔值返回为true或false。然后使用该布尔值返回main,然后将该布尔值传递到另一个函数,该函数根据传递的是true还是false来打印文本。但是,每当我运行该程序时,它总会同时打印对和错的两个语句。我确定在使用布尔值时我违反了某种规则,或者存在一些小错误,但是我似乎找不到它。任何帮助将不胜感激。

bool getConfirmation()
{
    std::cout << "Is this result correct? Y/N: ";
    char confirm;
    std::cin >> confirm;
    if (confirm == 'Y', 'y') return true;
    if (confirm == 'N', 'n') return false;
    else return false;
}

void confirmResult(bool confirm)
{
    if (confirm == true)
        std::cout << "Result is correct.";
    if (confirm == false)
        std::cout << "Sorry, please try again.";
    else
        std::cout << "Sorry, please try again.";
}

int main()
{
    std::cout << "Please input the first integer: ";
    int x{ getInteger() };
    std::cout << "Please input the desired operation: ";
    char op{ getOperation() };
    std::cout << "Please input the second integer: ";
    int y{ getInteger() };
    int result{ calculateResult(x, op, y) };
    printResult(result);
    bool confirm{ getConfirmation() };
    confirmResult(confirm);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

confirm == 'Y', 'y'并没有您认为的那样-这是一个表达式,涉及内置的逗号运算符,该运算符的总值为{{ 1}}。正确的代码是:

'y'

您将始终看到

  • confirm == 'Y' || confirm == 'y'

  • std::cout << "Result is correct.";

因为您的布尔逻辑不正确而被执行。

std::cout << "Sorry, please try again.";

如果if (confirm == true) A if (confirm == false) B else C ,则A和C都将被执行,因为confirm == true不会引入第二条if语句。您的逻辑应该是:

else