C语言scanf()返回值问题.

int b;
unsigned int a;
b=scanf("%u",&a);
printf("%u,%d",a,b);
为什么我输入一个负数,返回值居然是1?不是输入格式不匹配会返回0吗?为什么不起作用

返回值一般是用来返回函数的执行情况或者是函数所里所要算的数值等...
因为scanf是一个输入函数,所以是用来返回输入情况,返回0表示错误输入,返回1表示输入正确

如下代码:

#include <stdio.h>

void main()
{
int x,i=0;
i=scanf("%d",&x);
printf("%d",i);
}//你输入字母的数字来对比一下就清楚了追问

输入字符肯定会返回0,我问为什么我要输入的格式说明符明明是无符号整型,在我输入负数后却返回了1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-30
#include
<stdio.h>
int
main(int
argc,
char*
argv[])
{
int
b;
char
c;
scanf("%d",
&b);
scanf("%c",
&c);
printf("%d
%c",
b,
c);
return
0;
}
输入1.2其实%d只捕获到了1,后面那个.没有捕获。下次再捕获%d的时候就是0了,所以循环不能继续。
看上面那个程序,看得很清楚。
第2个回答  2016-10-24
a的值是?追问

我输入了一个负数,但是返回值却是1,按理说应该返回0啊

追答

不管有没有符合。干嘛都属于整形啊

不管有没有符号

都属于整形啊

相似回答