Возврат значений

 

Тип возврата void говорит о том, что функция ничего возвращает. Если тип возвращаемого значения не указан, то по умолчанию принимается int, а не void. Функции с типом возврата не равным void должны завершаться оператором returnрезультат ; ,где результатимя, константа или выражение,являющееся объектом любого типа. В функции может быть несколько операторов return. В качестве результата фунция может возвращать и код возврата.

// Пример 5.1.3

// Пример с несколькими операторами return и кодом возврата

#include <iostream>

using namespace std;

// прототип

int Doubler(int); // функция для удвоение значения числа <= 10000

// главная функция

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

int input=0, result=0;

cout << "Введите число между 0 и 10000 : ";

cin >> input;

cout << "\nПеред вызовом Doubler...";

cout << "\ninput: " << input << " doubled: " << result << "\n";

result=Doubler(input); // вызов функции

cout << "\nВозврат из Doubler ...\n";

// анализ кода возврата функции и завершение приложения

if (result == -1) {

cout << "Ошибка!!!\n";

cout << "\ninput: " << input << " doubled: " << result << "\n";

cin.get();cin.get();

return -1;

}

cout << "Продолжение...";

cout << "\ninput: " << input << " doubled: " << result << "\n";

cin.get(); cin.get();

return 0;

}

// реализация

int Doubler(int number) {

if (number <=10000)

return number*2; // вернуть удвоенное значение

else

return -1; // вернуть код возврата -1 (return code)

// Предупреждение (warning) -- никогда невыполняемый код

// (unreachable code)

// Это логическая ошибка программиста

cout << "Эта часть программы никогда не выполнится!!!\n";

}

// Пример 5.1.4

// Пример с несколькими операторами return и кодом возврата-перечислением

#include <iostream>

using namespace std;

// перечисление для кодов возврата

enum Errors {SUCCESS,BAD=-1};

// прототип

int Doubler(int); // функция для удвоение значения числа <= 10000

// главная функция

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

int input=0, result=0;

cout << "Введите число между 0 и 10000 : ";

cin >> input;

cout << "\nПеред вызовом Doubler...";

cout << "\ninput: " << input << " doubled: " << result << "\n";

result=Doubler(input); // вызов функции

cout << "\nВозврат из Doubler ...\n";

// анализ кода возврата функции и завершение приложения

if (result == BAD){

cout << "Ошибка!!!\n";

cout << "\ninput: " << input << " doubled: " << result << "\n";

cin.get();

return BAD;

}

cout << "Продолжение...";

cout << "\ninput: " << input << " doubled: " << result << "\n";

cin.get();

return SUCCESS;

}

 

// реализация

int Doubler(int number) {

if (number <=10000)

return number*2; // вернуть удвоенное значение

else

return BAD; // вернуть код возврата BAD (return code)

// Предупреждение (warning) -- никогда невыполняемый код

// (unreachable code)

// Это логическая ошибка программиста

cout << "Эта часть программы никогда не выполнится!!!\n";

}