@nickita178

Не могу разобраться в книге Герберт Шилдт C++. Ошибка в книге или в VS?

Есть книга Герберт Шилдт C++ базовый курс. На 14 странице самая простая первая программа. Я ее написал скомпилировал, запустил, но окошко моментально пропадает. Поискал в интернете и понял что нужно написать cin.get(). Так в книге неправильно или же в самой программе Visual Studio 2015? Дайте ответ.
Вот программа
#include
int main()
{
using namespace std;
cout << "Hello";
return 0;
}
  • Вопрос задан
  • 627 просмотров
Пригласить эксперта
Ответы на вопрос 6
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Это не ошибка. Программа запустилась, что-то напечатала и вернула 0. VS себя ведёт правильно и программа тоже. Никто в книгах по плюсам общей направленности не будет ориентироваться на конкретную IDE, OS или же компилятор. По крайней мере так должно быть.
Попробуйте запустить свою программу из консоли, и тогда чёрное окошечко не закроется, или же настроить IDE, чтобы не закрывала консоль. Думаю, что это нагуглится на раз-два.
Ответ написан
Комментировать
Это особенность студии. Чтобы окно сразу не закрывалось, нужно добавить в настройках:
Properties>Configuration Properties>Linker>System=Console
Отвечая на вопрос, в книге нет ошибки, например, под Линуксом этого нюанса нет.
Ответ написан
Комментировать
15432
@15432
Системный программист ^_^
Программа честно печатает надпись (cout << "Hello") и закрывается (return 0)
Ошибок нет.

Можете перед return 0; добавить бесконечный цикл while(1); и убедиться
Ответ написан
Rou1997
@Rou1997
И в книге, и в VS неправильно то, что не учли эту тонкость, но вина Шилдта гораздо больше.
Ответ написан
MrNexeon
@MrNexeon
1. Ошибки нет, это чисто тонкость, и внимание на ней не стоит зацикливать.

2. Вывод строки "Hello" в консоль происходит очень быстро, поэтому окошко моментально закрывается.

3. Программу можно поставить на "паузу" если вставить строчку system("pause"); перед return 0;

p.s. Рекомендую к прочтению C++ Базовый курс, Липпман вместо Шилдта
Ответ написан
@abcd0x00
Не нужно писать system("pause") или cin.get(). Нужно просто сделать ярлык на cmd.exe в папке с программой и стереть в его свойствах путь к рабочему каталогу. Так консоль будет запускаться прямо в этой папке, в ней уже можно будет вполнять программу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы