Возврат значений
Тип возврата 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";
}