Char等于char不需要的输出

时间:2018-10-29 15:26:24

标签: c++ if-statement char equals

我正在尝试创建一个简单的c ++程序,该程序可以打印出char是Y还是y,N或n还是都不是。

调试后,我发现即使char变量为'N',if(chr =='Y'||'y')语句也为true。谁能告诉我为什么这个if语句为真而不是假?

#include "pch.h"
#include <iostream>
using namespace std;

void main()
{
char chr = 'N';

if (chr == 'Y' || 'y')
{
    cout << "chr is y" << endl;

}
else if (chr == 'N' || 'n')
{
    cout << "chr is n" << endl;
}
else
{
    cout << "chr is something else" << endl;
}
}

2 个答案:

答案 0 :(得分:3)

这没做你的事:

if (chr == 'Y' || 'y')

这基本上是:

if (chr == 'Y' || true)

所以最后:

if (true)

您必须说一下您的比较:

if (chr == 'Y' || chr == 'y')

运算符==仅使用一个字符,而不是一组可能的字符。

答案 1 :(得分:1)

代替这个

if (chr == 'Y' || 'y')

您需要

if ((chr == 'Y') || (chr == 'Y'))

'N''n'类似。

也可以进行一次比较:

if (toupper((unsigned char)chr) == 'Y')

通过这种方式,可维护性得到了显着提高,因为如果字母发生变化,则仅需要更改一个值(对于不同的本地化,例如)。