scanf返回的是成功赋值的数量。输入1a1后,1被赋值到num,返回status==1,然后while(getchar()!='\n' && status==1);里面的getchar()吃掉一个字符a,并且判定这个字符!='\n'成立,所以 真&&真==真。
继续执行内循环,读入1给num,status==1,然后再执行while(getchar()!='\n' && status==1);这时因为1a1后面没有了,getchar()吃掉的是'\n',并且判定这个字符!='\n'不成立,所以 假&&真==假,
于是内循环结束,下面又重新外循环,处理下一行(处理时会把上次的1加上)。 1.函数返回值是函数经过处理得到的一个结果,比如是计算得到的一个值,逻辑真或假,等等。程序可以利用这个返回值做后面的处理。比如一个判断是否及格的函数返回真或假,我可以根据这个值,如果真就打印”恭喜你通过了.“,如果假就打印”你还要继续努力“.
不一定是给main,给调用它的函数,或给一个变量(比如staus)。
2.是的。其实scanf返回值的是成功赋值的个数,不会返回字符。比如scanf("%f",&n);要求输入一个数,假如你输入的是英文字母,它没办法给n,所以返回值就是0,代表1个也没有成功赋值。
页:
[1]