4
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] の最後に達した」というメッセージが表示されるのはなぜですか?

4

1 に答える 1

7

式が計算され、結果がドロップされるため、警告が表示されます。これは、「値を返さずに関数の最後に到達する」エラーに関連しています。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 )));
}
于 2013-10-09T00:57:57.557 に答える