Bool if' a'或者' b'

时间:2014-03-22 15:23:16

标签: c++ boolean

所以我需要将输入文本中的某些字母与'z'交换但由于某种原因我的检查不起作用。这是代码:

bool CheckLetter(int x) {
if(nm[0][x] == 'a' || 'e' || 'i' || 'o')return true;
return false; }

问题在于'||'。如果我只保留'a',我的程序就能完美运行。通过这种方式它只给我这样的东西:'zzzzzz'。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

'a'不是布尔值。 nm[0][x] == 'a'是。因此,您需要:

if(nm[0][x] == 'a' || nm[0][x] =='e' || nm[0][x] =='i' || nm[0][x] =='o')

请注意,在c ++中,'a'!= 0,因此它等于true,并且您的if语句将始终为true。唯一不正确的字符是\0,空字符的计算结果为整数0

答案 1 :(得分:1)

//更好

bool CheckLetter(char c) {
  switch (c) {
  case 'a':
  case 'e':
  case 'i':
  case 'o':
    return true;
  default:
    return false;
  }
}

或者这个:

bool CheckLetter(char c) {
  return (c == 'a') || (c == 'e') || (c == 'i') || (c == 'o');
}