警告:表达结果未使用

时间:2013-10-09 00:56:16

标签: c

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]”?

1 个答案:

答案 0 :(得分: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 )));
}