Ответ 1
Это потому, что вы нажимаете Enter после ввода чисел (-:
Первые две строки вашего "выхода" не являются чистым выходом. Он смешивается с входом.
Я начинаю С++, и я просто написал эту простую программу:
#include <iostream>
using namespace std;
int readNumber()
{
cout << "Insert a number: ";
int x;
cin >> x;
return x;
}
void writeAnswer(int x)
{
cout << "The sum is: " << x << endl;
}
int main()
{
int x = readNumber();
int y = readNumber();
int z = x + y;
writeAnswer(z);
return 0;
}
Я не понимаю, почему вывод выглядит следующим образом:
Insert a number: 3
Insert a number: 4
The sum is: 7
и не нравится:
Insert a number: 3Insert a number: 4The sum is: 7
поскольку в функции readNumber
нет endl;
.
Что мне не хватает?
(Конечно, я доволен результатом, который я получаю, но это неожиданно для меня)
Это потому, что вы нажимаете Enter после ввода чисел (-:
Первые две строки вашего "выхода" не являются чистым выходом. Он смешивается с входом.
У терминала есть функция/опция, называемая эхо-сигналом, в которой отображается ввод при вводе. Он по умолчанию включен и приводит к тому, что ваши собственные нажатия Enter появятся в качестве новой строки. Фактически, если вы добавили endl
после каждого ввода, это привело бы к появлению пустой строки после каждого номера. В GNU и многих системах UNIX эхо может быть отключено с помощью
$ stty -echo
Будьте осторожны с этой командой, так как вы не сможете увидеть следующие команды, которые вы вводите (stty echo
или reset
можно использовать для повторного включения эха).
Для получения дополнительной информации см. этот вопрос: Как отключить эхо в терминале?