2017-05-27 144 views
-3

我正在處理一個簡單的函數來將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'。 –

回答

2

不支持具有多重比較的表達式(例如,)。你需要打破在else if分支表達成兩個表達它們之間的邏輯和(&&)操作:

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