您的位置:首页 > 其它

VS2013中 scanf()函数返回值

2016-04-16 23:34 267 查看
碰到一个笔试题目:

double x, ret = 0;
for(int i =1; scanf("%lf",&x);++i){
ret += (x-ret)/i;
}


问这段代码是什么作用,其实就是一个很简单的求平均值功能,但是因为一点小错误纠结了好久,记录一下。

VS2013里面不能直接用scanf,会报错,网上有详细的解决方法。

对于double型的变量,scanf时应该使用%lf,float类型应该使用%f。 而对于printf , double和scanf都可以使用%f,double也可以用%lf。

scanf()函数有返回值且为int型。

scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

另外,考虑这个情况

void main()
{
int a,b,i;
i=scanf("%d%d%d",&a,&b);
printf("%d",i);
}


这个时候如果输入1 2 3, 那么i是等于3的,而不是2。scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。输入项的个数是3个,有3个值进入了缓冲区,两个被赋值了,一个扔掉了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: