否则,如果语句意外执行,则表现为其他语句

Else if statement executing unexpectedly, behaving as else statement

本文关键字:语句 其他 执行 如果 意外 否则      更新时间:2023-10-16

我正在研究一个简单的函数来将 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 范围内。有没有我看不到的问题?

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

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