5

次のようなプログラムをコンパイルすると g++ -O2 -s -static 2.cpp、警告が表示されましたignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
しかし、-02コピーステートメントから削除すると、警告は表示されません。

私の2.cppプログラム:

#include<stdio.h>
int main()
{
   int a,b;
   scanf("%d%d",&a,&b);
   printf("%d\n",a+b);
   return 0;
}


-O2この警告の意味と?? の意味は何ですか?

4

2 に答える 2

0

引数の数に一致する if ステートメントを作成することで、警告を処理しました。

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    int i;
    long l;
    long long ll;
    char ch;
    float f;
    double d;

    //6 arguments expected
    if(scanf("%d %ld %lld %c %f %lf", &i, &l, &ll, &ch, &f, &d) == 6)
    {
        printf("%d\n", i);
        printf("%ld\n", l);
        printf("%lld\n", ll);
        printf("%c\n", ch);
        printf("%f\n", f);
        printf("%lf\n", d);
    }
    return 0;
}
于 2015-05-30T23:05:03.490 に答える