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

问题描述:

我正在处理一个简单的函数来将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条件正常工作和火灾的空间,但不然,如果所有其他case语句的火灾,无论字符是否在范围a到z与否。有没有问题,我无法看到的条件?

+0

这是没有问题的,但你并不需要投'”“'(或任何其他字符文字)到'int';编译器会将它转换为匹配'=='另一端的'int'。 –

不支持具有多重比较的表达式(例如,)。你需要打破在else if分支表达成两个表达它们之间的逻辑和(&&)操作:

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