Студопедия

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

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

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






  • Листинг 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.