В последнее время я делал полный обзор C++ и наткнулся на фрагмент кода, содержащий следующее:станд :: CIN в то время как петля дает странный результат
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
b+=a;
}
cout << b << endl;
return 0;
}
Фрагмент кода, кажется, очень просто : он вводит вход с консоли в a и добавляет его на b, пока отображается действительный ввод. Однако всякий раз, когда я пытаюсь запустить эту программу с помощью ввода целых чисел, разделенных пробелами, он дает очень большое отрицательное целое число (-1218019327 - самый последний результат, когда весь вход состоял только из числа «1»). Только тогда, когда я изменить код, что это дает правильный вывод:
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
cout << a << endl;
b+=a;
}
cout << b << endl;
return 0;
}
Почему добавление соиЬ заявление изменить результат моего кода так thouroughly (пока положительно)?
Вы действительно перешли через это с помощью отладчика? – MrEricSir