Упражнение 1.5. В нашей программе весь вывод осуществлял один большой оператор. Перепишите программу так, чтобы для вывода на экран каждого операнда использовался отдельный оператор.
Упражнение 1.6. Объясните, является ли следующий фрагмент кода допустимым:
std::cout << "The sum of " << v1;
<< " and " << v2;
<< " is " << v1 + v2 << std::endl;
Если программа корректна, то что она делает? Если нет, то почему и как ее исправить?
1.3. Несколько слов о комментариях
Прежде чем перейти к более сложным программам, рассмотрим комментарии языка С++.
Хотя компилятор игнорирует комментарии, читатели нашего кода — напротив. Программисты, как правило, доверяют комментариям, даже когда другие части системной документации считают устаревшими. Некорректный комментарий — это еще хуже, чем отсутствие комментария вообще, поскольку он может ввести читателя в заблуждение. Когда вы модифицируете свой код, убедитесь, что обновили и комментарии!
В языке С++ существуют два вида комментариев: однострочные и парные. Однострочный комментарий начинается символом двойной наклонной черты (//
) и завершается в конце строки. Все, что находится справа от этого символа в текущей строке, игнорируется компилятором.
Второй тип комментария, заключенного в пару символов (/*
и */
), унаследован от языка С. Такие комментарии начинаются символом /*
и завершаются символом */
. Эти комментарии способны содержать все что угодно, включая новые строки, за исключением символа */
. Все, что находится между символами /*
и */
, компилятор считает комментарием.
В парном комментарии могут располагаться любые символы, включая символ табуляции, пробел и символ новой строки. Парный комментарий может занимать несколько строк кода, но это не обязательно. Когда парный комментарий занимает несколько строк кода, имеет смысл указать визуально, что эти строки принадлежат многострочному комментарию. Применяемый в этой книге стиль предполагает использование для обозначения внутренних строк многострочного комментария символы звездочки. Таким образом, символ звездочки в начале строки свидетельствует о ее принадлежности к многострочному комментарию (но это необязательно).
В программах обычно используются обе формы комментариев. Парные комментарии, как правило, используют для многострочных объяснений[2], а двойную наклонную черту — для замечаний в той же строке, что и код.
#include
/*
*
*
*/
int main()
{
//
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0; //
std::cin >> v1 >> v2; //
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
Комментарий, который начинается символом /*
, всегда завершается следующим символом */
. Поэтому один парный комментарий не может находиться в другом. Сообщение о подобной ошибке, выданное компилятором, как правило, вызывает удивление. Попробуйте, например, откомпилировать следующую программу:
/*
*
*
*
*/
int main()
{
return 0;
}
Упражнение 1.7. Попробуйте откомпилировать программу, содержащую недопустимо вложенный комментарий.
Упражнение 1.8. Укажите, какой из следующих операторов вывода (если он есть) является допустимым:
std::cout << "/*";
std::cout << "*/";
std::cout << /* "*/" */;
std::cout << /* "*/" /* "/*" */;