Главная » iPhone, Objective-C, Программирование для iOS и MacOS » return Objective-C

0

Многие функции в конце своей работы возвращают некоторое значение. Тип данных, возвращаемых функцией, указывается перед ее именем. (Если функция не возвращает никакого значения, вместо типа указывается ключевое слово void).

Создайте новую программу командной строки С с именем Degrees. В файле main.c добавьте перед main() функцию, которая преобразует температуру по Цельсию в шкалу Фаренгейта. Включите вызов новой функции в main().

#include <stdio.h>

float fahrenheitFromCelsius(float cel)

{

float fahr = cel * 1.8 + 32.0;

printf("%f Celsius is %f Fahrenheit\n", cel, fahr); return fahr;

}

int main(int argc, const char * argv[])

{

float freezeInC = 0;

float freezeInF = fahrenheitFromCelsius(freezeInC); printf("Water freezes at %f degrees Fahrenheit\n", freezeInF); return 0;

}

Заметили, как мы берем возвращаемое значение fahrenheitFromCelsius() и присваиваем его переменной freezeInF типа float? Здорово, верно?

Выполнение функции прекращается при возврате управления командой return.

Например, возьмем следующую функцию:

float average(float a, float b)

{

return (a + b)/2.0;

printf("The mean justifies the end\n");

}

Если вызвать эту функцию, вызов printf() выполняться никогда не будет.

Возникает естественный вопрос: «Почему мы всегда возвращаем 0 из функции main()»? Возвращая системе 0, вы тем самым говорите: «Все прошло нормально». Если программа завершается из-за каких-то неполадок, возвращается значение 1.

На первый взгляд это противоречит смыслу 0 и 1 в командах if; значение 1 соответствует true, а значение 0-false, поэтому вроде бы  естественно рассматривать 1 как признак успеха, а 0 – как признак неудачи. Поэтому считайте, что main() возвращает количество ошибок. В этом случае 0 – лучший результат! Ни одной ошибки – программа выполнена успешно.

Чтобы  смысл  возвращаемого  значения  стал  более  наглядным,  некоторые

программисты используют константы ЕXIT_SUССЕSS и EXIТ_FAILURE, которые представляют собой обычные псевдонимы для значений 0 и 1 соответственно. Эти константы определяются в заголовочном файле stdlib.h:

#include <stdio.h>

#include <stdlib.h>

float fahrenheitFromCelsius(float cel)

{

float fahr = cel * 1.8 + 32.0;

printf("%f Celsius is %f Fahrenheit\n", cel, fahr); return fahr;

}

int main(int argc, const char * argv[])

{

float freezeInC = 0;

float freezeInF = fahrenheitFromCelsius(freezeInC); printf("Water freezes at %f degrees Fahrenheit\n", freezeInF); return EXIT_SUCCESS;

}

В этой книге мы будем использовать 0 вместо ЕXIT_SUССЕSS.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии