布尔值,如果"a"或"b"

Bool if 'a' or 'b'

本文关键字:布尔值 如果      更新时间:2023-10-16

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

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

问题在'||'。如果我只保留"a",我的程序就能完美地工作。这样,它只给了我这样的东西:'zzzzzz'。什么好主意吗?

'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语句将始终为真。唯一不为真的字符是,空字符计算结果为整数0

//更好

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');
}