int a;
while(cin>>a)
{
···
}
这时如果从键盘输入的为int类型的数据,则“cin>>a”这条语句返回a的地址,因为a的地址在计算机中不为0,因此,遇到判断语句时,就判断”真“。当输入的数据类型不为int型时,其返回值为0,表示“假”。
关键这种判断条件对我们造成的困扰在于,但我们想在其后继续输入数据时,却无法输入。
例如:
int a;
while(cin>>a)
{
···
}
int b;
cin>>b;
这时,我们会发现,计算机跳过了“cin>>b;”这条语句。
其原因在于,当输入错误时,即输入数据与变量类型不符时,cin.good()的值被置为0即“假”,这时cin就不再将数据输入到变量中。
解决方法:
cin.clear();\\清除错误标记
cin.sync();\\清除已输入的字符
然后就可以继续输入了。