标题:[求助]如果是输入字母为什么不能输入第二个数,而且会出现"sum is -8589934 ...
只看楼主
sdrzw
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-11-4
 问题点数:0 回复次数:9 
[求助]如果是输入字母为什么不能输入第二个数,而且会出现"sum is -858993460"?
#include<iostream.h>
int main()
{
int n1,n2,sum;
cout << "enter the first interger\n";
cin>>n1;
cout<<"enter the second interger\n";
cin>>n2;
sum=n1+n2;
cout<<"sum is "<<sum<<endl;
return 0;
}
//如果是输入字母为什么不能输入第二个数,而且会出现"sum is -858993460"?
我是新人,还请多多提携,不吝赐教
搜索更多相关主题的帖子: sum 字母 输入 
2007-04-26 18:47
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
输入的是字符的话,该流被终止,所以接下来的输入操作都无效了。

输出的那个数是因为n1,n2均为内存中不确定值!

Fight  to win  or  die...
2007-04-26 18:57
sdrzw
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-11-4
得分:0 
#include<iostream.h>
int main()
{
char n1,n2,sum;
cout << "enter the first interger\n";
cin>>n1;
cout<<"enter the second interger\n";
cin>>n2;
sum=n1+n2;
cout<<"sum is "<<sum<<endl;
return 0;
}
如果我改成字符类型又输入字符,就会输出"sum is ?"
这又为什么呢?

藏锋守拙磨利剑,一心学好C语言
2007-04-26 19:08
sdrzw
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-11-4
得分:0 

我知道了,因为我输入的是"a"和"b",因为ASC2码的“?”是195号,所以才是“?”


藏锋守拙磨利剑,一心学好C语言
2007-04-26 19:24
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

编译器会隐式的转换类型!


Fight  to win  or  die...
2007-04-26 19:36
markshao1986
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-23
得分:0 
如果你输入的是字母,那么整个输入流就会停止了
2007-04-27 22:05
海子
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-7-13
得分:0 
#include<iostream.h>
int main()
{
int n1,n2,sum;//这里的sum没有初司化,可以sum = 0;试一下把
cout << "enter the first interger\n";
cin>>n1;
cout<<"enter the second interger\n";
cin>>n2;
sum=n1+n2;
cout<<"sum is "<<sum<<endl;
return 0;
}
2007-04-28 19:26
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
字符在做四则运算时等价与整数,输出时输出本身的类型.有截位的操作.

倚天照海花无数,流水高山心自知。
2007-04-29 15:56
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
得分:0 

要注意你自己定义的类型,还有编译器可能的隐式转换问题


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-29 16:34
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

C++的input方法:

#include<iostream.h>
template<class T>
void input(T &t)
{
while(1)
{
cout<< \"enter a interger\"<<endl;
cin>>t;
if(cin.rdstate()==0)
break;
cout<<\"输入数据格式不合法!\"<<endl;
cin.clear();
cin.sync();
}
}
c的input方法:

void input(int& t)
{
while(1)
{
printf(\"enter a interger\n\");
if(scanf(\"%d\",&t)!=0)
break;
cout<<\"输入数据格式不合法!\"<<endl;
fflush(stdin);
}
}

main方法

int main()
{
int n1,n2,sum;
inpit(n1);
input(n2);
sum=n1+n2;
cout<<\"sum is \"<<sum<<endl;
return 0;
}


[此贴子已经被作者于2007-4-29 19:54:19编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-29 19:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-135213-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.340220 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved