#include<iostream>;
int main()
{
int a = 1;
int b = 2;
std::cin >> a >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}
cuando entro 3 4
como entrada, la salida será 3+4=7
, así, es extraño; Pero cuando ingreso a b
, la salida es 0+0=0
(¿Por qué es 0 y 0?); El más confuso, a 4
, será 0+0=0
(¿Por qué no '0 + 4 = 4' ?????); Luego escribo otro programa.¿Qué hace cin cuando hay un error
#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;
}
cuando entro a 4
, ¿por qué es todavía 0+0=0
? ¿No debería ser 0+4=4
?
Gracias a todos los cordiales !!
Escribo prog3, para probar lo que sucederá cuando no escriba 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;
}
Cuando a b
nuevo, emite 0+-1218170892=-1218170892
(¿Por qué no es 0+0=0
??)
la entrada se espera que sea un número entero, no un personaje. Ingresar "a", "3.141" o "lo que sea" simplemente no es válido. Si su entrada es "a", el programa no sabe que ha usado "a" como variable y que desea usar el valor predeterminado en su lugar. – stefan
Es obvio que es C++ 11, porque de lo contrario, los valores serían 1 y 2, no 0. – Drise
Para responder a su edición: No ha eliminado una de la entrada. Necesitas 'cin.clear(); cin.ignore (1); ', para que la segunda extracción tenga éxito. – Drise