gpt4 book ai didi

c++ - 出错时cin做什么

转载 作者:可可西里 更新时间:2023-11-01 17:58:49 25 4
gpt4 key购买 nike

#include<iostream>;

int main()
{
int a = 1;
int b = 2;
std::cin >> a >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}

当我输入 3 4 时,输出将是 3+4=7,好吧,这很奇怪;但是当我输入a b时,输出是0+0=0(为什么是0和0?);最令人困惑的是,一个4,它会是0+0=0(为什么不是'0+4=4'?????);然后我写另一个程序。

#include<iostream>;

int main()
{
int a = 1;
int b = 2;
std::cin >> a;
std::cin.clear();
std::cin >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}

当我输入a 4时,为什么还是0+0=0?不应该是0+4=4吗?

感谢所有的热心人!!

我写了prog3,测试当我不写int a=1;int b=2;

时会发生什么
2

#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a ;
cin >> b;
cout<< a << "+"<< b <<"="<< a+b << endl;
return 0;
}

再次a b时,输出0+-1218170892=-1218170892(为什么不是0+0=0??)

最佳答案

像所有 istream 一样,std::cin 有错误位。发生错误时会设置这些位。例如,您可以使用 good()bad()eof() 等函数找到错误位的值。如果您读取了错误的输入(fail() 返回 true),请使用 clear() 清除标志。您可能还需要 ignore(1); 来删除违规字符。

有关详细信息,请参阅状态函数部分。 http://en.cppreference.com/w/cpp/io/basic_ios

关于c++ - 出错时cin做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com