注册 登录
编程论坛 C++教室

关于输入输出流的一道程序

jim1024amw 发布于 2008-10-15 21:30, 1106 次点击
有以下程序:
#include <iostream.h>
void main()
{ int x,y=18;
  char z='M';
  cin>>x>>y>>z;
  cout<<x<<","<<y<<","<<z<<endl;
}
当输入为46A49时,输出为:46,0,M
为什么是这个结果.
13 回复
#2
blueboy820062008-10-15 22:35
你倒过来试试...
cin>>z>>y>>x;
#3
choco10242008-10-15 22:42
输入数据时类型应该对应吧,用空格给隔开试试
#4
jim1024amw2008-10-15 22:43
回复 2# blueboy82006 的帖子
输入46A49后,结果是0,6,4为什么?
#5
blueboy820062008-10-15 22:47
[bo][un]jim1024amw[/un] 在 2008-10-15 22:43 的发言:[/bo]

输入46A49后,结果是0,6,4为什么?

那个z就能接受一个字符....
多了它可享受不了...
#6
jim1024amw2008-10-15 22:50
回复 5# blueboy82006 的帖子
那为什么x输出为0呢?
#7
blueboy820062008-10-15 22:55
回复 6# jim1024amw 的帖子
你怎么输入的啊?
#8
jim1024amw2008-10-15 22:57
回复 7# blueboy82006 的帖子
46A49啊
11点熄灯,先到这吧.
#9
blueboy820062008-10-15 22:59
A赋给整型的a 了...
我也熄了...再说吧...
#10
wanchuan02008-10-16 06:07
回复 1# jim1024amw 的帖子
输入的类型要一一对应,并且要用空格隔开。如果是cin>>x>>y>>z;你应该输入46 49 A。
因为y的类型是int,你却给它定值A,它无法识别,就给出0,
但是对于char 它会不变,仍然是初始化的值M
#11
blueboy820062008-10-16 12:22
对应类型输入自然就不会有问题...
关键是要理解不对应时发生了什么...
cin>>x>>y>>z;这句每次输入时是返回左操作数的,也就是说
你输入46
这时,
x=46;
cin>>x执行完返回cin
程序就相当于cin>>y>>z;
这时输入继续...
依次执行...
要知道只有在读取成功时才会如此...
当类型不匹配时,流就会出错,输入就结束了...
#12
blueboy820062008-10-16 12:23
但愿没说错,我从来没这么试过...
#13
jim1024amw2008-10-16 12:32
cin>>x>>y>>z;
从运算符重载来说:应该是分别进行cin〉〉x;cin〉〉y;cin 〉〉z;
但为什么会出现 y=0的结果,难道是将先判断是否合法 ,不合法后将终止符\0的ASCII码赋给了y?
微软对于C++输入流有什么硬性规定??
#14
ruankui0012008-10-16 15:53
46A49
46,18,M
Press any key to continue..
1