Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5-С++-22 марта-2012.doc
Скачиваний:
12
Добавлен:
15.09.2019
Размер:
1.48 Mб
Скачать

1.7. Оператор return

Оператор возврата из функции return завершает выполнение функции и возвращает управление той функции, которая вызвала текущую. Существует две формы оператора return:

return выражение;

или просто

return;

Выражение, если оно присутствует, может быть только скаляр­ным. Например, следующая функция вычисляет и возвращает куб значения своего аргумента:

float cube(float z) ( return z * z * z; }

Поведение оператора возврата из функции return в главной функции main() отличается от поведения в "неглавных" функциях.

Выполнение оператора return; или return выражение; в функции main() приводит к завершению программы. Управление при таком вы­ходе передается вызывающей программе, например операцион­ной системе, которая может анализировать значение выражения, использованного в операторе возврата.

Возвращение нуле­вого значения свидетельствует об успешном завершении выполнения, а любых дру­гих – об отказе (при выполнении программы были какие-то ошибки).

Если программист явно не поместил в функцию main( ) оператор return, то компилятор автоматически поместит его в конце текста функции main().

В "неглавных" функциях возврат выполняется в вызывающую функцию. Когда вызываемая функция завершает выполнение необходимых действий, полученное в результате значение передается оператору return. После выполнения оператора return, приостанов­ленная вызывающая функция продолжает выполнение с точки обращения. Полу­ченное в результате вызова функции значение используется при выполнении опера­тора, в котором произошло обращение к функции.

Оператор return относится к операторам управления программой. Его назначение не только определить и вернуть вычисленное функцией значение, но и прервать работу алгоритма функции, выполнив выход из нее правильным образом.

1.8. Оператор присваивания

Самым распространенным с точки зрения использования в программах является оператор присваивания.

В общем случае оператор присваивания имеет вид

V = Е ;

где V - идентификатор (имя) переменной; Е – выражение, значение ко­торого присваивается переменной V ; = – знак присваивания.

Обратите внимание на использование точки с запятой в конце каждого оператора.

Оператор присваивания предназначен для при­сваивания переменной или совокупности переменных значения выражения. Оператор присваивания не имеет никакого ключевого слова, он идентифи­цируется символом присваивания =.

Например, если А, В и С – имена переменных, то следующие конструк­ции языка С++ будут операторами присваивания:

А =1; (установить значение переменной А, равное 1).

А = А +1; (увеличить на 1 значение переменной А).

В = В + 2; (увеличить на 2 значение переменной В).

С = А * В; (присвоить переменной С значение, равное произведению значений переменных А и В).

Обратите внимание на последние три оператора в предыдущем примере. С точки зрения математики такая запись неверна, но поскольку здесь знак = выступает в роли операции присваивания, а не в роли знака равенство, то эти операторы правомочны и такие конструкции операторов часто используются в программах на языке С++.

Выполнение оператора присваивания сводится к вычислению значения выражения Е с последующим присвоением вычисленного значения выражения Е переменной V, если характеристики значения выражения Е и перемен­ной V совпадают

Например оператор А = А+1; означает: взять текущее значение переменной А, прибавить к нему единицу и полученный результат сохранить в переменной А.

Часть оператора присваивания, находящуюся слева от знака присваи­вания (=), принято называть его левой частью, а часть оператора, стоящую справа от знака присваивания, – правой частью.

В операторе присваивания тип значения выражения Е может не совпадать с типом допустимых значений переменной V. В атом случае значение выражения Е преобразуется к типу, требуемому перемен­ной V.

Таким образом, выполнение оператора присваивания происходит в 4 этапа:

1. Сначала вычисляется значение выражения Е.

2. Это значение засылается в промежуточную переменную результата выражения.

3. Затем эта промежуточная переменная приводится (преобразуется) к типу переменной V , стоящей слева от знака = .

4. Происходит присвоение преобразованного значения Е переменной V, Поэтому следует всегда помнить, что в случае несоответствия атри- бутов левой и правой частей оператора присваивания может происходить обрезание (без округления), то есть потеря некоторых значащих цифр (как старших, так и младших), без прерывания выполнения программы. Несоблюдение этой особенности выполнения оператора присваивания может привести к потере точности результата иди даже вообще к потере результата.

Оператор присваивания, также как и другие операторы, может быть по­мечен меткой. Наличие метки в общем случае не обязательно, но дает возможность обращаться к данному оператору по имени.

Можно привести такие примеры операторов присваивания:

x1=-b/2;

А=А*В;

М:N= N+ 1;

pi=3.1415927;

r = cos(x) + x*sin(x);

K:M:z=z-1;

m=x77=m4;

Для обозначения одного и того же оператора может быть использовано несколько меток; они должны быть разделены двоеточием. Например,

M1;M10: m=m+1;

Вообще говоря, использование нескольких меток не представляет ни­каких преимуществ.

В отличие от обычных математических формул, отражающих статику вы­числительного процесса, оператор присваивания показывает динамику вы­числений. Дело в том, что символ присваивания имеет смысл заменить прежнее значение переменной, стоящей в левой части, на значение выра­жения, стоящее в правой части оператора. Поэтому в языке С++ допус­тимы такие операторы присваивания, как

n=n+1;

a=a*f;

b=b+c;

Так, конструкция n=n+1; имеет смысл: присвоить переменной n ее старое значение плюс 1.

Этот тип оператора, явно не имеющий аналогии в обычной математичес­кой записи, широко распространен в языке С++.

Необходимо помнить, что для успешного выполнения оператора присва­ивания все переменные, стоящие в правой части оператора (в выражении), должны быть определены (получить числовые значения) в предшествующих операторах.