2013-10-09 89 views
3
char change(const char c){ 
    (c >= 'A')&&(c <= 'M') ? (c+'N'-'A') : 
((c >= 'N')&&(c <= 'Z') ? (c-('N'-'A')) : 
((c >='a')&&(c <= 'm') ? (c+'n'-'a') : 
((c >= 'n')&&(c <= 'z') ? (c-('n'-'a')) : c))); 
} 

爲什麼我會得到「警告:表達式結果未使用」和「錯誤:控制達到非void函數結束[-Werror,-Wreturn-type]」?警告:表達結果未使用

+2

@ paulsm4:如果正確格式化,深深鏈':'表達式並不一定是那麼可怕。 –

回答

5

由於表達式得到計算,所以會得到警告,然後結果被刪除。這是關係到「到達函數的結尾沒有返回值」錯誤:在表達式前添加return會同時修改:

char change(const char c) { 
    return (c >= 'A') && (c <= 'M') ? 
     (c+'N'-'A') : ((c >= 'N') && (c <= 'Z') ? 
      (c-('N'-'A')) : ((c >='a') && (c <= 'm') ? 
       (c+'n'-'a') : ((c >= 'n') && (c <= 'z') ? 
        (c-('n'-'a')) : c))); 
} 
相關問題