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

[求助]如果是输入字母为什么不能输入第二个数,而且会出现"sum is -85899346

sdrzw 发布于 2007-04-26 18:47, 1071 次点击
#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"?
我是新人,还请多多提携,不吝赐教
9 回复
#2
aipb20072007-04-26 18:57
输入的是字符的话,该流被终止,所以接下来的输入操作都无效了。

输出的那个数是因为n1,n2均为内存中不确定值!
#3
sdrzw2007-04-26 19:08
#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 ?"
这又为什么呢?
#4
sdrzw2007-04-26 19:24

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

#5
aipb20072007-04-26 19:36

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

#6
markshao19862007-04-27 22:05
如果你输入的是字母,那么整个输入流就会停止了
#7
海子2007-04-28 19:26
#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;
}
#8
nuciewth2007-04-29 15:56
字符在做四则运算时等价与整数,输出时输出本身的类型.有截位的操作.
#9
yuyunliuhen2007-04-29 16:34

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

#10
wfpb2007-04-29 19:53

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编辑过]

1