Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 5.6. Использование нескольких операторов return






1: // Листинг 5.6. Использование нескольких

2: // операторов return в теле Функции

3:

4: #include< iostream.h>

5:

6: int Doubler(int AmountToDouble);

7:

6: int main()

9: {

10:

11: int result = 0:

12: int input;

13:

14: cout < < " Enter а number between 0 and 10, 000 to double: ":

15: cin > > input;

16:

17: cout < < " \nBefore doubler is called... ";

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

19:

20: result = Doubler(input);

21:

22: cout < < " \nBack from Doubler...\n";

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

24:

25:

26: return 0;

27: }

28:

29: int 0oubler(int original)

30: {

31: if (original < = 10000)

32: return original * 2;

33: else

34: return -1;

35: cout < < " Vou can't get here! \n";

36: }

 

Результат:

Enter a number between 0 and 10, 000 to double: 9000

Before doubler is called...

input: 9000 doubled: 0

Back from doubler...

input: 9000 doubled: 18000

Enter a number between 0 and 10.000 to double: 11000

Before doubler is called...

input: 11000 doubled: 0

Back from doubler...

input: 11000 doubled: -1

 

Анализ: В строках 14 и 15 программа предлагает пользователю ввести число и coхраняет его в переменной input. В строке 18 отображается только что введенное число вместе со значением локальной переменной result. В строке 20 вызывается функция Doubler() и введенное значение передается ей как параметр. Результат выполнения функции присваивается локальной переменной result, и в строке 23 снова выводятся значения тех же переменных.

В строке 31, относящейся к функции Doubler(), значение переданного параметра сравнивается с числом 10 000. Если окажется, что оно не превышает 10 000, функция возвращает удвоенное значение исходного числа. Если оно больше 10 000, функция возвращает число -1 в качестве сообщения об ошибке.

Выражение в строке 35 никогда не будет достигнуто, потому что при любом значении переданного параметра (большем 10 000 или нет) возврат из функции будет осуществлен либо в строке 32, либо в строке 34, но в любом случае до строки 35. Хороший компилятор сгенерирует предупреждение, что это выражение не может быть выполнено, и хороший программист должен принять соответствующие меры!

 

Вопросы и ответы

В чем состоит разница между объявлениями int main() и void main() и какое из них лучше использовать? Ведь оба варианта работают одинаково хорошо, поэтому стоит ли применять первый вариант int main(){ return 0; }?

Оба объявления будут работать с большинством компиляторов, но только вариант int main() является ANSI-совместимым, следовательно, только объявление int main() гарантирует работу программы.

По существу, отличие состоит в следующем. При использовании объявления int функция main()возвращает значение для операционной системы. После завершения работы вашей программы это значение могут перехватить, например, программы пакетной обработки.

И хотя вы вряд ли будете использовать возвращаемое значение, стандарт ANSI требует его присутствия.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.