c++ - 将布尔值传递给另一个无法正常工作的函数?
问题描述
对 C++ 非常陌生,只使用了几天。我正在尝试编写一个简单的控制台计算器,它要求用户输入 Y 或 N 以确认打印的结果实际上是正确的。
我调用了一个函数,该函数要求用户输入一个字符作为 Y/N,然后根据输入的内容将其作为布尔值返回为真或假。然后它使用该 bool 返回到 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;
}
解决方案
confirm == 'Y', 'y'
不会做你认为它做的事 - 这是一个涉及内置逗号运算符的表达式,它总是计算为. 正确的代码是:'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
如果confirm == true
,则 A 和 C 都将被执行,因为第二if
条语句不是由 a 引入的else
。你的逻辑应该是:
if (confirm == true)
std::cout << "Result is correct.";
else
std::cout << "Sorry, please try again.";
推荐阅读
- excel - 如何写入现有的excel文件
- spring-cloud-task - 如何从外部应用程序触发 Spring Cloud 任务?
- json - Swift 从 JSON 请求生成通用函数
- react-admin - 在 react-admin 中编辑嵌套 protobuf 字段的最佳方法?
- apache - apache2反向代理配置
- android - 对象是如何创建的?
- ruby - 在`main`对象上调用RSpec测试方法
- mysql - 使用 javadriver 将 Matlab 连接到没有数据库工具箱的 MY SQL 数据库
- c# - 如何验证贝宝付款是否真实 C#
- .net - .Net 中的集成测试,用于两个微服务之间的 rest api