Я просто пытаюсь выяснить это:Хотя цикл и CIN CHAR, INT
Я следующий код:
#include <iostream>
using namespace std;
int main() {
int n, x = 0;
cin >> n;
char s[3];
while (n-- > 0) {
cout << n << endl;
// cin >> s;
}
return 0;
}
Если я заполняю п с 2, все отлично работает (1
и 0
напечатайте), но если я раскомментирую линию cin >> s;
, будет выполнена только первая итерация (1
) (и вход будет сохранен в s
).
Теперь мой вопрос: почему так работает? И как я могу это исправить? Спасибо заранее.
Работы как ожидалось здесь. Попробуйте запустить его в отладчике. –
Я запустил его по адресу: https://www.codechef.com/ide и с помощью ввода: 2 (newline) X ++ (newline) --X – bryanjhv
@ n.m. Он * может * работать не так, как ожидалось, в зависимости от ввода * s *. Это похоже на переполнение классического буфера, поскольку s - только [3]. –