Scanf声明

时间:2013-04-07 09:50:13

标签: c scanf

#include <stdio.h>
#include <stdlib.h>

你好,我想知道为什么这个程序没有执行。似乎我总是在正确执行scanf功能时遇到麻烦。我得到错误:

错误:忽略使用属性warn_unused_result声明的scanf的返回值

注意:我知道有一种更有效的方法来编写我当前的程序,但这是不重要的。我想知道这个错误意味着什么,以及为什么我一直得到它并可能是一个解决方案。感谢你们。这是代码:

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

    int x;
    int y;
    int z;
    int temp;

    scanf("%d", &x);
    scanf("%d", &y);
    scanf("%d", &z);

        if (x > y) {
           temp = x;
           x = y;
           y = temp;
        }

        if (y > z) {
            temp = y;
            y = z;
            z = temp;
        }

        if (x > z) {
            temp = x;
            x = z;
            z = temp;
        }

        printf("%d", x);
        printf("%d", y);
        printf("%d", z);

  return EXIT_SUCCESS; }

2 个答案:

答案 0 :(得分:2)

您从编译器获得的错误就是它所说的。为了使您的应用程序正确,您必须检查scanf的返回值。可能的返回值在man page

中描述

有关导致错误的原因的解释,请参阅gcc manual的“warn_unused_result”部分(引自Peter R.s回复)。

答案 1 :(得分:2)

来自GCC文件:

  

warn_unused_result属性会导致发出警告        如果具有此属性的函数的调用者不使用它        回报价值。这对于不检查的函数很有用        结果是安全问题或总是一个bug,例如        realloc

      int fn () __attribute__ ((warn_unused_result));
      int foo ()
      {
        if (fn () < 0) return -1;
        fn ();
        return 0;
      }
     

在第5行发出警告。