- •1. Краткие теоретические сведения
- •1.4. Пустой оператор
- •1.5. Составной оператор (блок)
- •1.6. Операторы начала и конца программы
- •Int main()
- •1.7. Оператор return
- •1.8. Оператор присваивания
- •1.8.1. Множественное присваивание
- •1.8.2. Ошибки при присваивании
- •1.8.3. Не путайте операторы равенства и присвоения
- •1.8.4. Составные операторы присвоения
- •1.8.6. Присваивание значения при объявлении
- •1.9. Операторы ввода-вывода
- •1.10. Функции ввода и вывода
- •1.10.1. Функция printf
- •1.10.2. Функция scanf
- •1.11. Операторы потокового ввода и вывода
- •1.11.1. Использование cout для отображения вывода на экран
- •1.11.2. Использование cout для вывода чисел
- •1.11.3. Вывод нескольких значений одновременно
- •1.11.4. Использование специальных символов вывода
- •1.11.5. Другие специальные символы
- •1.11.5. Вывод восьмеричных и шестнадцатеричных значений
- •1.11.6. Вывод на стандартное устройство ошибок
- •1.11.7. Управление шириной вывода
- •1.11.8. Директива #define
- •1.11.9. Оператор потокового вывода cin
- •1.11.10. Второе знакомство с cin
- •1.11.11. Следите за ошибками переполнения
- •1.11.12. Следите за ошибками несовпадения типов
- •1.11.13. Чтение символьных данных
- •1.11.14. Чтение слов с клавиатуры
- •1.11.15. Чтение строковых данных
- •1.12. Комментарии. Использование пробелов
- •1.13. Линейный вычислительный процесс
- •1.16. Таблица выбора идентификаторов
- •2. Задание
- •2.10. Задания
- •2.10.1. Задание 1
- •2.10.2. Задание 2
- •2.10.3. Задание 3 (домашнее)
- •3. Выводы
- •4. Требование к отчету
- •5. Вопросы для самоконтроля
- •Литература
- •Оглавление
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.
Этот тип оператора, явно не имеющий аналогии в обычной математической записи, широко распространен в языке С++.
Необходимо помнить, что для успешного выполнения оператора присваивания все переменные, стоящие в правой части оператора (в выражении), должны быть определены (получить числовые значения) в предшествующих операторах.