C++ 在 if 语句中使用 char

Posted

技术标签:

【中文标题】C++ 在 if 语句中使用 char【英文标题】:C++ using char in an if statement 【发布时间】:2014-10-15 19:00:00 【问题描述】:

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

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() 或类似的类型的值?

【问题讨论】:

【参考方案1】:
if(uType != 'a' || uType != 's' || uType != 'm' || uType != 'd')

char 要么不等于'a',要么等于'a',在这种情况下它不等于's',所以这个条件总是成立的。

应该是逻辑与:

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

【讨论】:

【参考方案2】:

您的 if 条件正在执行以下检查:

如果值不等于-- 要么 如果值不等于 s -- 要么 如果值不等于 m -- 要么 如果值不等于 d --

无论 char 变量 uType 是什么,它始终不会是前 4 个变量中的至少 3 个,因此 if 条件将始终导致 TRUE 值。

已编辑:我相信您想要做的是以下内容:

if ( (uType == 'a') || (uType == 's') || ......)

    return;

else

   ...//The code you previously had if it were true

在这种情况下,只要 uType 是 4 个值中的 1 个,您就会返回,否则您将实现您的代码。

【讨论】:

【参考方案3】:

改变这一行 -

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

到这里——

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

一定会成功的。

【讨论】:

以上是关于C++ 在 if 语句中使用 char的主要内容,如果未能解决你的问题,请参考以下文章

如果赋值/语句在 C++ 中意味着啥?

if/else 语句不起作用 C++ [关闭]

FLTK - 在 if 语句中使用输入值 (const char*)

释放内存时是不是需要使用IF语句? [复制]

如何在if条件语句中搜索char数组中的char

C 语言,在 if-else 语句中赋予 char 值?