【发布时间】:2013-04-07 09:50:12
【问题描述】:
#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; }
【问题讨论】:
-
你是否使用 -Werror 进行编译?
-
这通常不是错误,而是警告。它告诉您您没有使用 scanf 的返回值,这可能是也可能不是错误(在这种情况下,可能不是)。将编译器的警告级别降低一个档次。
-
@Thomas:恕我直言,认为这是一个错误是正确的。
scanf将返回成功解析到给定变量中的令牌数,因此继续使用x/y/z而不确保它们实际上被赋予了值是不正确的。 -
@DCoder 我同意你的看法。我不确定,因为这看起来像初学者代码,所以错误检查可能不是 OP 所追求的。再读一遍,我认为你是对的。
-
@Thomas 人类是最难预测的通信设备。我建议这 is 是一个错误,如果不在这里,那么别无他处。返回值当然应该在这里检查。