如果(aCHAR =='字符'||'另一个字符')问题

时间:2011-05-01 23:00:08

标签: c++ char boolean

嗨所以我正在尝试检查字符串中的某个字符,以确保它不是\,=,|等等,并用“播放器”字符替换空格如果不是,但函数返回true每次,即使char newLoc等于''(空):

screen.get_contents返回一个充满strins的向量容器,以及
sprite.get_location返回一个带有两个数字的int数组,[0]代表X,[1]是Y。

bool check_collision(Sprite& sprite,int X, int Y, Screen& screen) 
    {
    ////////////////////// check whats already there /////
        char newLoc = screen.get_contents(sprite.get_location()[0]+Y,sprite.get_location()[1]+X);
        if (newLoc == '|' || '/' || '_' || '=' || 'X' || 'x' )
            return true;
        else
            return false;
    };

有什么问题?的谢谢!

2 个答案:

答案 0 :(得分:8)

你需要:

if (newLoc == '|' || newLoc == '/' || ...)

你所写的内容相当于:

if (newLoc == ('|' || '/' || ...))

相当于:

if (newLoc == 1)

请注意,更清晰的写作方式可能是:

switch (newLoc)
{
case '|':
case '/':
...
    return true;

default:
    return false;
}

答案 1 :(得分:4)

newLoc == '|' || '/' || '_' || '=' || 'X' || 'x'

不起作用,你必须这样做:

newloc == '|' || newloc == '/' || etc...

然而,这更容易阅读:

switch (newloc):
    case '|':
    case '/':
    case '_':
    case '=':
    case 'X':
    case 'x':
        return true;
    default:
        return false;