очень простая программа на C ++ закрывается после ввода пользователя без особой причины? - PullRequest
7 голосов
/ 03 июля 2011

Я только начал изучать C ++ и написал этот пример программы из текста, и когда я компилирую и запускаю его, он просто закрывается после того, как пользователь вводит любое число и нажимает ввод.Я предполагаю, что ответ на этот вопрос очень очевиден, так что простите меня как новичка ... это действительно моя первая программа на C ++: P

#include <iostream>

using namespace std;

int main ()
{
  int numberOfLanguages;
  cout << "Hello Reader.\n"
       << "Welcome to C++.\n"

  cout << "How many programming languages have you used? ";
  cin  >> numberOfLanguages;

  if(numberOfLanguages < 1)
      cout << "Read the preface.  You may prefer.\n"
           << "a more elementary book by the same author.\n";
  else
      cout << "Enjoy the book.\n";

  return 0;
}

Ответы [ 7 ]

15 голосов
/ 03 июля 2011

Представьте, что вы разрабатываете модель для выполнения приложения. У вас есть два варианта:

A) Когда достигнут конец программы, она прекращается.

B) Когда достигнут конец программы, она должна оставаться в каком-то странном состоянии неопределенности. Он по-прежнему сохранит системные ресурсы и фактически ничего не будет делать, но для его закрытия пользователь должен явно прекратить его.

Я думаю, что любой выбрал бы вариант А здесь, и это то, что вы видите. Конец main достигнут, и ваша программа завершает работу.

Если вы хотите сделать паузу в конце, примите какие-то данные от пользователя, т.е.

char c;
std::cin >> c;
return 0;
6 голосов
/ 03 июля 2011

Он закрывается, потому что выполнение достигает return 0; и больше ничего не остается.

Если вы хотите, чтобы программа ждала перед закрытием, вы можете добавить что-то вроде этого:

cout << "Press enter to exit...";
cin  >> someVarThatWontBeUsed;

Вы также можете запустить программу из командной строки вместо запуска .exe. В любом случае он достигнет конца выполнения, но приглашение останется открытым.

6 голосов
/ 03 июля 2011

Программа закрывается, потому что программе больше нечего делать.Он выводит окончательные операторы действительно очень быстро и затем достигает return 0, что приводит к его выходу.Вы можете сделать что-то там, чтобы приостановить программу.

В Windows основной способ сделать это - system("pause"); (вам потребуется #include <stdlib.h>)

cin.getlineболее стандартный способ сделать это.

5 голосов
/ 03 июля 2011

Ваша программа заканчивается сразу после того, как вы распечатали свой текст. Если вы хотите что-то увидеть на экране, вы можете добавить cin прямо перед вашим return 0, чтобы ваша программа ожидала ответа пользователя перед выходом.

// Wait for user to hit enter
cin >> dummyVar;

return 0;
3 голосов
/ 03 июля 2011

Либо добавьте еще одно чтение из cin, чтобы дождаться пользователя, либо откройте командную строку и запустите ее там.

2 голосов
/ 03 июля 2011

В опубликованной вами программе произошла ошибка.Я не смог скомпилировать то, что вы опубликовали.

  cout << "Hello Reader.\n"
   << "Welcome to C++.\n"

не заканчивается точкой с запятой.Я добавил точку с запятой, и она компилируется и запускается так, как вы ожидаете.

Редактировать: Конечно, вы должны запускать программу в терминале, который остается открытым после выхода из программы, или использовать cin, чтобы ждать большего ввода,или что-то типа того.

0 голосов
/ 03 июля 2011

После того, как пользователь введет число, которое сохраняется в numberOfLanguages, оно достигает return 0, которое возвращается из функции main и, таким образом, программа заканчивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...