否则if语句意外执行,表现为else语句

时间:2017-05-27 09:59:44

标签: c++ if-statement

我正在开发一个简单的函数来将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范围内。是否有一个我无法看到的问题?

1 个答案:

答案 0 :(得分:2)

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

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