关于while(scanf("%d",&num)==1)

#include <stdio.h>
void main()
{int s=0,num;
while(scanf("%d",&num)==1)
s=s+num;
printf("%d",s);
}
为什么输入任何数字都能执行s=s+num,唯独在输入字母时会跳出循环。while(scanf("%d",&num)==1)难道不是在输入值是1时进行循环的意思吗?

在你输入字母时,因为scanf("%d",&num)中格式要求是整型(%d),所以不符合,返回值为0,而当你输入任何数字时,scanf的返回值都是1。

这是因为:

函数原型:
int scanf(char *format[,argument,...]);

scanf的返回值由后面的参数决定

scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF
且返回值为int型.
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-13
语句的意思是输入值是整型数时进行循环
如果输入是整型数,那么scanf函数会返回输入的整型数的个数
第2个回答  2009-12-13
scanf的返回值
scanf的返回值由后面的参数决定
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.

详见百度百科:http://baike.baidu.com/view/1390039.htm?fr=ala0#4

关于while(scanf("%d",&num)==1)
在你输入字母时,因为scanf("%d",&num)中格式要求是整型(%d),所以不符合,返回值为0,而当你输入任何数字时,scanf的返回值都是1。这是因为:函数原型:int scanf(char *format[,argument,...]);scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b);如果a和b都被成功读入,那么scanf...

c语言 while(scanf("%d", &num) == 1) 起什么作用
1、scanf()是格式输入函数,它的返回值是已经正确输入变量的个数,如返回值为1,代表已经输入了一个变量,但它的返回值一般不用。2、==是c语言中逻辑运算符"相等"的符号,scanf("%d", &sum) == 1表示scanf函数的返回值为1。3、while(scanf("%d", &sum) == 1) 是整句话的意思是当变量su...

C语言while(scanf("%d",&num)==1);语句的一个问题
scanf()函数的返回值是返回成功赋值的数据项数,所以不论你输入的是数字还是空格,只要正常读入了,scanf()函数的返回值就是1。只不过空格是将空格的ACSII码值读入赋值给num了

while (scanf(''%d'', &num)==1) ;
因为scanf在读取数字时返回1条件为真,循环继续。这样就会无限输入数字但是都会忽略掉。

while(scanf("%d",&n) == 1) 这句是什么意思,“== 1”到底指的是什么...
判断有没有输入值,输入一次就进入循环,如果没输了,就循环结束了。

c语言的问题关于while(scanf(“%d",&sum)!=1)
scanf从缓冲区读取:你输入的字符串会保存在一个缓冲区内,scanf在正确的时候是到这个缓冲区中读取字符,并且从缓冲区中删除字符。但如果是%d格式碰到了字母,则不会读取也不会删除,之后ABC还在缓冲区内。scanf不停止:如果缓冲区内有内容,scanf是不会停下来等你输入的,因为ABC一直在缓冲区内,所以...

初学C语言 while(scanf("%d",&n)==1) 是什么意思?
scanf 函数有一个返回值,0表示接受输入失败,1表示接受输入成功。 while(scanf("%d",&x)==1) 的意思就是: 当接收输入变量x的值成功的时候,继续做循环。

while(scanf("%d",n)==1) 是什么意思呢?
while(scanf("%d",n)==1)\/\/改为:while(scanf("%d",&n)==1) \/\/表示当正确的输入了一个值,重复执行后面的代码。

while (scanf("%d", &n)==1 && n!=0)具体什么意思
scanf("%d",&a),输入一个数,scanf返回值为1,如果输入的是字母什么乱七八糟的,scanf返回0,输入不成功,那么这句话的意思就是,检测输入的数不为0,再进行循环~

c语言,input = (scanf("%ld",&num) ==1) 是什么意思?
scanf("%ld",&num) ==1 判断是否输入成功,scanf函数定义:int scanf(const char * restrict format,...);scanf("%d %d",&a,&b);函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;如果只有a被成功读入,返回值为1;如果a和b都未被成功读入,返回值为0;如果遇到错误或...

相似回答