Таким образом, пока не достигнут конец файла (или не произошла ошибка ввода), условие остается истинным и выполняется тело цикла >while
. Тело состоит из одного составного оператора присвоения, который добавляет значение переменной >value
к текущему значению переменной >sum
. Однажды нарушение условия завершает цикл >while
. По выходе из цикла выполняется следующий оператор, который выводит значение переменной >sum
, сопровождаемое манипулятором >endl
.
Разные операционные системы используют для конца файла различные значения. Для ввода символа конца файла в операционной системе Windows достаточно нажать комбинацию клавиш
Одной из задач компилятора является поиск ошибок в тексте программ. Компилятор, безусловно, не может выяснить, делает ли программа то, что предполагал ее автор, но вполне способен обнаружить ошибки в форме записи. Ниже приведены примеры ошибок, которые компилятор обнаруживает чаще всего.
Синтаксические ошибки. Речь идет о грамматических ошибках языка С++. Приведенный ниже код демонстрирует наиболее распространенные синтаксические ошибки, снабженные комментариями, которые описывают их суть.
>// ошибка: отсутствует ')' список параметров функции main()
>int main ( {
> // ошибка: после endl используется двоеточие, а не точка с запятой
> std::cout << "Read each file." << std::endl:
> // ошибка: отсутствуют кавычки вокруг строкового литерала
> std::cout << Update master. << std::endl;
> // ошибка: отсутствует второй оператор вывода
> std::cout << "Write new master." std::endl;
> // ошибка: отсутствует ';' после оператора return
> return 0
>}
Ошибки несовпадения типа. Каждый элемент данных языка С++ имеет тип. Значение >10
, например, является числом типа >int
. Слово >"привет"
с парными кавычками — это строковый литерал. Примером ошибки несовпадения является передача строкового литерала функции, которая ожидает целочисленным аргумент.
Ошибки объявления. Каждое имя, используемое в программе на языке С++, должно быть вначале объявлено. Использование необъявленного имени обычно приводит к сообщению об ошибке. Типичными ошибками объявления является также отсутствие указания пространства имен, например >std::
, при доступе к имени, определенному в библиотеке, а также орфографические ошибки в именах идентификаторов.
>#include
>int main() {
> int v1 = 0, v2 = 0;
> std::cin >> v >> v2; // ошибка: используется "v" вместо "v1"
> // cout не определен, должно быть std::cout
> cout << v1 + v2 << std::endl;
> return 0;
>}
Сообщение об ошибке содержит обычно номер строки и краткое описание того, что компилятор считает неправильным. Исправлять ошибки имеет смысл в том порядке, в котором поступают сообщения о них. Зачастую одна ошибка приводит к появлению других, поэтому компилятор, как правило, сообщает о большем количестве ошибок, чем имеется фактически. Целесообразно также перекомпилировать код после устранения каждой ошибки или небольшого количества вполне очевидных ошибок. Этот цикл известен под названием "