0
#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; }
4

2 回答 2

2

你从编译器得到的错误就是它所说的。为了使您的应用程序正确,您必须检查 scanf 的返回值。手册页中描述了可能的返回值。

有关导致错误的原因的说明,请参阅gcc 手册的“warn_unused_result”部分(引用于 Peter Rs 回复)。

于 2013-04-07T09:51:56.470 回答
2

从 GCC 文档:

如果具有此属性的函数的调用者不使用其返回值,则该warn_unused_result属性会发出警告。这对于不检查结果是安全问题或始终是错误的函数很有用,例如 realloc.

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

导致第 5 行出现警告。

于 2013-04-07T09:56:05.670 回答