. Таким образом, результатом является объект класса >ostream
, в который записано предоставленное значение.
Выражение вывода использует оператор ><<
дважды. Поскольку оператор возвращает свой левый операнд, результат первого оператора становится левым операндом второго. В результате мы можем сцепить вместе запросы на вывод. Таким образом, наше выражение эквивалентно следующему:
>(std::cout << "Enter two numbers:") << std::endl;
У каждого оператора в цепи левый операнд будет тем же объектом, в данном случае >std::cout
. Альтернативно мы могли бы получить тот же вывод, используя два оператора:
>std::cout << "Enter two numbers:";
>std::cout << std::endl;
Первый оператор выводит сообщение для пользователя. Это сообщение, строковый литерал (string literal), является последовательностью символов, заключенных в парные кавычки. Текст в кавычках выводится на стандартное устройство вывода.
Второй оператор выводит >endl
— специальное значение, называемое манипулятором (manipulator). При его записи в поток вывода происходит переход на новую строку и сброс буфера (buffer), связанного с данным устройством. Сброс буфера гарантирует, что весь вывод, который программа сформировала на данный момент, будет немедленно записан в поток вывода, а не будет ожидать записи, находясь в памяти.
Внимательный читатель, вероятно, обратил внимание на то, что в этой программе использована форма записи >std::cout
и >std::endl
, а не просто >cout
и >endl
. Префикс >std::
означает, что имена >cout
и >endl
определены в пространстве имен (namespace) по имени >std
. Пространства имен позволяют избежать вероятных конфликтов, причиной которых является совпадение имен, определенных в разных библиотеках. Все имена, определенные в стандартной библиотеке, находятся в пространстве имен >std
.
Побочным эффектом применения пространств имен библиотек является то, что названия используемых пространств приходится указывать явно, например >std
. В записи >std::cout
применяется оператор области видимости>::
(scope operator), позволяющий указать, что здесь используется имя >cout
, которое определено в пространстве имен >std
. Как будет продемонстрировано в разделе 3.1, существует способ, позволяющий программисту избежать частого использования подробного синтаксиса.
Отобразив приглашение к вводу, необходимо организовать чтение введенных пользователем данных. Сначала следует определить две переменные (variable), в данном случае >v1
и >v2
, которые и будут содержать введенные данные:
>int v1 = 0, v2 = 0;
Эти переменные определены как относящиеся к типу >int
, который является встроенным типом данных для целочисленных значений. Мы также инициализируем (initialize) их значением 0. При инициализации переменной ей присваивается указанное значение в момент создания.