2013-10-09 5 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))); 
} 

Почему я получаю сообщение «предупреждение: результат выражения неиспользован» и «ошибка: управление достигает конца невоидной функции [-Werror, -Wreturn-type]»?предупреждение: выражение result unused

+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))); 
} 
Смежные вопросы