【问题标题】:Else if statement executing unexpectedly, behaving as else statement [duplicate]Else if 语句意外执行,表现为 else 语句 [重复]
【发布时间】:2017-10-28 04:01:24
【问题描述】:

我正在开发一个将 ascii 代码转换为数组索引的简单函数,但我在 else-if 语句方面遇到了一些问题。

int getIndex(char character) {
    int code = int(character);
    int index = -1;

    if (code == int(' ')){
         index = 26;
    }  else if (int('a') <= code <= int('z')) {  
        index = code - int('a');
    }     
    return index;
}

if 条件可以正常工作并在空格上触发,但 else if 语句在其他情况下触发,无论字符是否在 a 到 z 范围内。有我看不到的问题吗?

【问题讨论】:

  • 这不是问题,但您不需要将' '(或任何其他字符文字)转换为int;编译器会将其转换为与== 另一侧的int 匹配。

标签: c++ if-statement


【解决方案1】:

不支持具有多重比较的表达式(例如, 支持)。您需要将else if 分支中的表达式分成两个表达式,它们之间有逻辑和 (&amp;&amp;) 运算符:

if (code == int(' ')){
     index = 26;
}  else if (int('a') <= code && code <= int('z')) {  
    // Here -----------------^
    index = code - int('a');
}     
return index;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2013-03-13
    • 2020-03-20
    相关资源
    最近更新 更多