【问题标题】:Bool if 'a' or 'b' [closed]布尔如果'a'或'b'[关闭]
【发布时间】:2014-03-22 15:23:15
【问题描述】:

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

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

问题出在“||”中。如果我只保留“a”,我的程序就可以完美运行。这样,它只给了我这样的东西:'zzzzzz'。有什么想法吗?

【问题讨论】:

  • nm[0][x] == 'a' || nm[0][x] == 'e' || ...
  • || 是布尔或,未设置联合。

标签: c++ boolean


【解决方案1】:

'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,即计算结果为整数 0 的空字符。

【讨论】:

    【解决方案2】:

    //更好

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

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2015-05-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      相关资源
      最近更新 更多