这个scanf的返回值对时间上的消耗有什么影响啊?
scanf的返回值是读入的成功个数
scanf("%d%d",&a,&b)如果a和b都成功读入,那么scanf返回为2,如果屏幕输入,,两个逗号,那么
scanf返回为0
这样while(scanf("%d%d",&a,&b)==2)就是判断是否都正确读入数据,如果成功,scanf("%d%d",&a,&b)==2整个表达式就是1,在c程序里,1就是真,所以继续循环下去。当不能正确读入数据时候,整个表达式就是0,跳出循环
但是如果用while(scanf("%d%d",&a,&b)) ,如果scanf("%d%d",&a,&b)返回值是1也可以继续循环,例如输入12,这样a正确读入为12,,(逗号)不能读入进来,这样b是失败的,scanf返回值是1,满足循环条件,所以继续执行,貌似出现死循环现象。追问
scanf("%d%d",&a,&b)如果a和b都成功读入,那么scanf返回为2,如果屏幕输入,,两个逗号,那么
scanf返回为0
这样while(scanf("%d%d",&a,&b)==2)就是判断是否都正确读入数据,如果成功,scanf("%d%d",&a,&b)==2整个表达式就是1,在c程序里,1就是真,所以继续循环下去。当不能正确读入数据时候,整个表达式就是0,跳出循环
但是如果用while(scanf("%d%d",&a,&b)) ,如果scanf("%d%d",&a,&b)返回值是1也可以继续循环,例如输入12,这样a正确读入为12,,(逗号)不能读入进来,这样b是失败的,scanf返回值是1,满足循环条件,所以继续执行,貌似出现死循环现象。追问
那么while(cin>>a>>b)呢。
追答cin读取的话,遇到结束符(包括空白符)会终止,只读取空白符之前的部分
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-02-24
scanf("%d",&a); 如果成功读取一次 返回1
scanf("%d%d",&a,&b);执行后返回2
如果你后边加了==2 就是一个判断条件。。
如果没加 则表示 scanf("%d%d",&a,&b) 永远为真,所以只要有两个数读入 就会循环
scanf("%d%d",&a,&b);执行后返回2
如果你后边加了==2 就是一个判断条件。。
如果没加 则表示 scanf("%d%d",&a,&b) 永远为真,所以只要有两个数读入 就会循环