对于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;
}
答案 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