C++ 如果(aCHAR==';字符';&|';另一个字符';)出现问题
您好,所以我尝试检查字符串中的某个字符,以确保它不是\、=、|等,如果不是,则用“player”字符替换空格,但函数每次都返回true,即使char newLoc等于“”(空): screen.get\u contents返回一个装满strin的向量容器,并且C++ 如果(aCHAR==';字符';&|';另一个字符';)出现问题,c++,char,boolean,C++,Char,Boolean,您好,所以我尝试检查字符串中的某个字符,以确保它不是\、=、|等,如果不是,则用“player”字符替换空格,但函数每次都返回true,即使char newLoc等于“”(空): screen.get\u contents返回一个装满strin的向量容器,并且 sprite.get_location返回一个整数数组,其中有两个数字,[0]表示X,[1]表示Y bool check_collision(Sprite& sprite,int X, int Y, Screen& scr
sprite.get_location返回一个整数数组,其中有两个数字,[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;
};
有什么问题谢谢您需要:
if (newLoc == '|' || newLoc == '/' || ...)
您所写的内容相当于:
if (newLoc == ('|' || '/' || ...))
if (newLoc == 1)
这相当于:
if (newLoc == ('|' || '/' || ...))
if (newLoc == 1)
请注意,更简洁的书写方式可能是:
switch (newLoc)
{
case '|':
case '/':
...
return true;
default:
return false;
}
不起作用,你必须这样做:
newloc == '|' || newloc == '/' || etc...
但是,这更容易阅读:
switch (newloc):
case '|':
case '/':
case '_':
case '=':
case 'X':
case 'x':
return true;
default:
return false;
谢谢但是为什么IDE会出现1???@Griffin:
|
是逻辑OR运算符。如果它的任一参数为TRUE
,则它“返回”TRUE
。字符文字的计算结果为TRUE
,除非它是空字符'\0'
。因此表达式的RHS等于TRUE
。当解释为整数值时,这反过来计算为1
。