Как и методы, функции могут возвращать значение. Тип значения, возвращаемого с помощью оператора return, должен быть согласован с типом возвращаемого значения, объявленного для этой функции. В объявлении функции, которое начинается с:
1 |
float kmh_to_mph(float km_speed) |
содержится определение функции с именем kmh_to_mph, которая принимает один аргумент типа float с именем km_speed и возвращает значение тоже типа float. Аналогичным образом:
1 |
int gcd(int u, int v) |
определяет функцию gcd(наибольший общий делитель) с целыми аргументами u и v и возвращает целое значение.
В программе 1.4 функции передаются два аргумента в виде двух чисел, для которых нужно определить их наибольший общий делитель(gcd, greatest common divisor).
Программа 1.4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#import <Foundation/Foundation.h> // Эта функция ищет наибольший общий делитель двух // неотрицательных целых значений и возвращает соответствующий результат int gcd(int u, int v) { int temp; while(v != 0) { temp = u % v; u = v; v = temp; } return u; } main() { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int result; result = gcd(150, 35); NSLog(@"The gcd of 150 and 35 is %i", result); result = gcd(1026, 405); NSLog(@"The gcd of 1026 and 405 is %i", result); NSLog(@"The gcd of 83 and 240 is %i", gcd(83, 240)); [pool drain] return 0; } |
Вывод программы 1.4:
1 2 3 |
The gcd of 150 and 35 is 5 (Наибольший общий делитель 150 и 35 равен 5) The gcd of 1026 and 405 is 27 (Наибольший общий делитель 1026 и 405 равен 27) The gcd of 83 and 240 is 1 (Наибольший общий делитель 83 и 240 равен 1) |
Функция gcd принимает два целых аргумента. Данная функция имеет доступ к этим аргументам через имена формальных параметров u и v.
После объявления переменной temp типа int программа выводит на терминал значения аргументов u и v вместе с соответствующим сообщением. Затем функция вычисляет и возвращает наибольший общий делитель этих двух целых чисел.
В строке:
1 |
result = gcd(150, 35); |
происходит вызов функции gcd с аргументами 150 и 35 и сохранение значения, которое возвращает функция, в переменной result.
Если не указан тип возвращаемого значения функции, компилятор предполагает, что функция возвращает целое значение(если она вообще возвращает значение).
Многие программисты не указывают тип возвращаемого значения, если функция должна возвращать целые значения. Однако такой подход противоречит практике надежного программирования.
Компилятор предупредит, что для возвращаемого значения задан по умолчанию тип int, но это признак того, что вы делаете что-то неверно.
Тип по умолчанию для возвращаемого значения отличается от методов. Если для метода не указан тип возвращаемого значения, компилятор предполагает, что метод возвращает типа id. Но для метода тоже следует указывать тип возвращаемого значения.