- 论坛徽章:
- 0
|
10可用积分
1. 如果一次输入的数据超过一个,它会自动分配给下一次的cin或者scanf,不会自动取第一个数字
> vi io.c
"io.c" [New file]
#include<stdio.h>
int main(void){
int a,b,c;
printf("input a\n");
scanf("%d",&a);
printf("input b\n");
scanf("%d",&b);
printf("input c\n");
scanf("%d",&c);
printf("%d,%d,%d\n");
return 0;
}
> vi io.cpp
#include<iostream>
using namespace std;
int main(void){
int a,b,c;
cout<<"input a\n";
cin>>a;
cout<<"input b\n";
cin>>b;
count<<input c\n";
cin>>c;
cout<<a<<","<<b<<","<<c<<"\n";
return 0;
}
上面两个程序,运行结果完全一样
> ./a.out
input a
23 4
input b
input c
7
23,4,7
2.如果输入格式非法,那么下一次的cin或者scanf就被取消了。这是为什么呢????????????????????????????????
> ./a.out
input a
e
input b
input c
0,-4196928,5
>
这里为什么不在输入了呢? 只是由于第一个cin/scanf类型不匹配,以后的cin/scanf全都得变得无效了?
然后0,-4196928,5又是怎么来的?
环境: solaris8+CC
十分感谢! |
最佳答案
查看完整内容
man scanf是这么说的。1 读入非法格式数据时scanf返回,输入缓冲区不会被清空,下一次scanf读的是相同内容。2 0,-4196928,5是随机数,你在scanf之前printf或cout试试,应该是一样的值[ 本帖最后由 ynchnluiti 于 2009-3-3 15:11 编辑 ]
|