首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >警告C6236:(\\x)总是一个非零的常量

警告C6236:(\\x)总是一个非零的常量
EN

Stack Overflow用户
提问于 2020-01-02 19:24:01
回答 2查看 2.1K关注 0票数 1

我有一条似乎根本不起作用的if语句。我肯定这是个愚蠢的错误,但我搞不懂。

代码语言:javascript
运行
复制
void convertTemp()
{
    char choice;
    float userTemp;
    cout << "Input either F or C followed by a temperature and this program will convert it to the opposite." << endl;
    cout << "Example: (F 260.8)" << endl;
    cout << "Input: ";
    cin >> choice; choice = toupper(choice); //Read in and convert user letter to capital 
    cin >> userTemp;

    if (choice != 'F' || 'C')
    {
        cout << "Invalid format. Check your letter and temperature" << endl;
        system("pause");
        return;
    }

这个简单的if语句旨在检查用户的字符输入是否不是'F‘或'C',然后返回错误消息并将他们踢出函数。但是,不管输入如何,这个if语句总是返回true,我不知道为什么。任何帮助都将不胜感激!

视听演播室给了我这个警告信息。我读过关于错误代码的文章,但是我很难理解它。

警告C6236:(X_X)始终是非零常量

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-02 19:27:38

您的if语句必须是显式的,if (choice != 'F' || 'C')不能工作。

正确的if语句是if (choice != 'F' && choice != 'C')

编辑:至于解释,||意味着您有两个语句正在评估。在英文本中,该声明可理解为:

IF the choice is not 'F' or IF 'C'

...and,这一点也不太合理。您需要显式地声明您希望双方评估选择是否等于这些值。

感谢皮特·贝克尔,我抄袭并粘贴了你的问题,但实际上并没有深入探究你所做事情背后的逻辑。如果您试图在OR中使用!=,那么大约有一半的计算结果都是真的。使用&&是您想要的运算符,因此您可以检查choice不是C还是F

票数 6
EN

Stack Overflow用户

发布于 2020-01-02 19:44:58

解决了!这里的问题是,我在IF语句中只运行了一个比较。(choice != 'F' \\ 'C')。这个大胆的比较正在进行中,但“C”并没有被比作任何东西。

修复是运行2比较,如这里所示。(选择!= 'F‘&选项!= 'C')。我现在将选择与“F”和“C”分别进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59568905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档