ignoring return value of ‘scanf’, declared with attribute warn_unused_result

1180 ワード

#include 

int main(int argc, const char * argv[]) {

    int k;
    scanf("%d",&k);
    int arr[k];
    for(int i = 0;i maxSum){
            maxSum = sum;
        }else if(sum < 0){
            sum = 0;
        }
    }
    
    printf("%d
",maxSum); return 0; }

 
ptaにコードを書くとignoring return value of‘scanf’,declared with attribute warn_が表示されますunused_resultの警告
間違いではありませんが、不快に見えますが、
なぜなら、scanfの戻り値が使用されていないため、戻り値が1の場合は入力成功を表し、戻り値が0の場合は入力エラーを示し、intタイプが必要だが文字列が入力されているなど、タイプが一致しないため、戻り値の結果に基づいてエラーメッセージを追加することができ、scanfの戻り値を使用すると警告は報告されません.
修正されたコードは次のとおりです.
#include 

int main() {

    int k;
    if(scanf("%d",&k) != 1){
        printf("     !");
    }
    int arr[k];
    for(int i = 0;i maxSum){
            maxSum = sum;
        }else if(sum < 0){
            sum = 0;
        }
    }
    
    printf("%d
",maxSum); return 0; }