C++ 在 if 语句中使用 char

标签 c++ if-statement char

我正在构建一个标准的四功能计算器,但遇到了一个令人困惑的错误。

char Engine::AskUser(){
    char type;
    std::cout << "'a'dd, 'm'ulitply, 's'ubract, or 'd'ivide ?\n";
    std::cin >> type;
    CheckUser(type);
    return type;
}

void Engine::CheckUser(char uType){
    if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd'){
        std::cout << "Type 'a', 'm', 's', or 'd'\n";
        AskUser();
    }
    else
        return;
}

发生的情况是,即使我输入 a、s、m 或 d,if 语句仍会重复执行,就好像这些条件为真,但显然不是这样。我不明白。 uType 是否没有从 AskUser() 或类似的东西中携带类型的值?

最佳答案

if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')

A char 要么不等于 'a',要么等于 'a',在这种情况下它不等于到,所以这个条件总是为真。

应该是逻辑与:

if(uType != 'a' && uType != 's' && uType != 'm' && uType != 'd')

关于C++ 在 if 语句中使用 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438273/

相关文章:

c++ - 匹配两个 Vector 中的变量并以有效的方式制作比较的 Map

c++ - 如何在多核机器上解释 boost::timer::cpu_timer 的输出?

c# - 检查字符串是否有大写、小写和数字

c++ - 组合 ECDSA key

PowerShell:如何获得 if else 构造正确?

r - R 中 ifelse() 的奇怪行为 : when are the values evaluated?

通过添加 '0' 将整数转换为 char - 发生了什么?

c - 如何用确定的值初始化数组?

c++ - 字符串到字符数组不起作用

c++ - 使用 C++11 正则表达式捕获上下文无关语法文件的内容