Оператор return (C)
Оператор return завершает выполнение функции и возвращает управление вызывающей функции. Выполнение возобновляется в вызывающей функции в точке сразу после вызова. Оператор return может возвращать значение, передавая его вызывающей функции. Дополнительные сведения см. в статье Тип возвращаемого значения.
Синтаксис
jump-statement :
return expression необ. ;
Значение expression , если оно имеется, возвращается вызывающей функции. Если expression параметр опущен, возвращаемое значение функции не определено. Параметр «выражение», если он присутствует, вычисляется и преобразуется к типу, возвращаемому функцией. Если оператор return содержит выражение в функциях, имеющих тип возвращаемого значения void , то компилятор выдает предупреждение, а выражение не вычисляется.
Если в определении функции оператор return не указан, то после выполнения последнего оператора вызванной функции управление автоматически возвращается вызывающей функции. В этом случае возвращаемое значение вызванной функции не определено. Если функция имеет тип возвращаемого значения, отличный от void , это считается серьезной ошибкой и компилятор выводит предупреждающее диагностическое сообщение. Если функция имеет тип возвращаемого значения void , то такое поведение приемлемо, но может считаться плохим стилем. Чтобы ваше намерение было понятным, используйте простой оператор return .
В качестве лучшей методики разработки рекомендуется всегда указывать тип возвращаемого значения для ваших функций. Если возвращаемое значение не требуется, объявите функцию как имеющую тип возвращаемого значения void . Если тип возвращаемого значения не указан, компилятор C предполагает, что по умолчанию используется тип возвращаемого значения int .
Многие программисты используют круглые скобки для заключения expression аргумента return оператора . Однако использовать эти скобки в языке C необязательно.
Если компилятор обнаруживает операторы, размещенные после return , он может вывести предупреждающее диагностическое сообщение о недоступном для выполнения коде.
В функции main оператор return и выражение являются необязательными. То, что происходит с указанным возвращаемым значением, зависит от реализации. Только для Майкрософт:реализация C от Майкрософт возвращает значение выражения процессу, вызвавшему программу, например cmd.exe . Если выражение return не указано, среда выполнения C от Майкрософт возвращает значение, соответствующее успешному (0) или неудачному (ненулевое значение) выполнению.
Пример
В этом примере показана одна программа из нескольких частей. Она демонстрирует оператор return и использование его для завершения выполнения функции и, при необходимости, возврата какого-то значения.
// C_return_statement.c // Compile using: cl /W4 C_return_statement.c #include // for INT_MAX #include // for printf long long square( int value ) < // Cast one operand to long long to force the // expression to be evaluated as type long long. // Note that parentheses around the return expression // are allowed, but not required here. return ( value * (long long) value ); >
Функция square возвращает квадрат своего аргумента, используя более широкий тип для избежания арифметической ошибки. Только для систем Майкрософт: в реализации C от Майкрософт тип long long достаточно велик, чтобы вмещать произведение двух значений int без переполнения.
Скобки вокруг выражения return в функции square вычисляются как часть выражения, и использовать их в операторе return не требуется.
double ratio( int numerator, int denominator ) < // Cast one operand to double to force floating-point // division. Otherwise, integer division is used, // then the result is converted to the return type. return numerator / (double) denominator; >
Функция ratio возвращает частное двух int аргументов в виде значения double с плавающей запятой. Выражение return принудительно использует операцию с плавающей запятой путем приведения одного из операндов к типу double . В противном случае будет использоваться оператор целочисленного деления, а дробная часть будет потеряна.
void report_square( void ) < int value = INT_MAX; long long squared = 0LL; squared = square( value ); printf( "value = %d, squared = %lld\n", value, squared ); return; // Use an empty expression to return void. >
Функция report_square вызывает square со значением параметра INT_MAX — самым большим целым числом со знаком, которое помещается в int . Результат типа long long сохраняется в squared , а затем выдается в выводе. Функция report_square имеет тип возвращаемого значения void , поэтому она не содержит выражения в операторе return .
void report_ratio( int top, int bottom ) < double fraction = ratio( top, bottom ); printf( "%d / %d = %.16f\n", top, bottom, fraction ); // It's okay to have no return statement for functions // that have void return types. >
Функция report_ratio вызывает ratio со значениями параметров 1 и INT_MAX . Результат типа double сохраняется в fraction , а затем выдается в выводе. Функция report_ratio имеет тип возвращаемого значения void , поэтому явно возвращать значение не требуется. Выполнение report_ratio не дает результата и не возвращает вызывающей функции никакого значения.
int main()
Функция main вызывает две функции: report_square и report_ratio . Поскольку report_square не принимает параметров и возвращает void , результат не присваивается переменной. Аналогичным образом функция report_ratio возвращает void , поэтому ее возвращаемое значение тоже не сохраняется. После вызова каждой из этих функций выполнение продолжается в следующем операторе. Затем main возвращает значение 0 (обычно свидетельствующее об успешном выполнении), чтобы завершить программу.
Чтобы скомпилировать пример, создайте файл исходного кода с именем C_return_statement.c . Затем скопируйте весь пример кода в показанном здесь порядке. Сохраните файл и скомпилируйте его в окне Командной строки разработчика с помощью следующей команды:
cl /W4 C_return_statement.c
После этого, чтобы запустить пример кода, введите C_return_statement.exe в командной строке. Выходные данных в этом примере выглядят следующим образом:
value = 2147483647, squared = 4611686014132420609 1 / 2147483647 = 0.0000000004656613
Какие типы значения может вернуть функция инструкцией return
(PHP 4, PHP 5, PHP 7, PHP 8)
return возвращает управление программой модулю, из которого была вызвана функция. Выполнение программы продолжается с инструкции, следующей за местом вызова.
Если вызывается из функции, выражение return немедленно прекращает выполнение текущей функции и возвращает свой аргумент как значение данной функции. return также завершит выполнение выражения eval() или всего файла скрипта.
Если вызывается из глобальной области видимости, выполнение текущего файла скрипта прекращается. Если текущий файл скрипта был подключён с помощью функций include или require , тогда управление возвращается к файлу, который вызывал текущий. Более того, если текущий файл скрипта был подключён с помощью include , тогда значение переданное return будет возвращено в качестве значения вызова include . Если return вызывается из главного файла скрипта, тогда выполнение скрипта прекращается. Если текущий файл скрипта был вызван конфигурационными опциями auto_prepend_file или auto_append_file из файла настроек php.ini , тогда выполнение этого скрипта прекращается.
Для более детальной информации смотрите раздел Возвращаемые значения.
Замечание: Заметьте, что return является языковой конструкцией, а не функцией и круглые скобки, окружающие аргументы, не являются необходимостью. Мало того, они тут не приветствуются.
Замечание: Если параметры не указаны, тогда круглые скобки должны быть опущены и будет возвращён null . Вызов return со скобками, но без аргументов вызовет синтаксическую ошибку.
Начиная с PHP 7.1.0, операторы возврата без аргумента в функциях, объявляющих тип возврата, вызывают E_COMPILE_ERROR , если только тип возврата не void , в этом случае такую же ошибку вызывают операторы возврата с аргументом.
JavaScript: Инструкция return
С помощью инструкции return функция может возвратить некоторое значение (результат работы функции) программе, которая её вызвала. Возвращаемое значение передаётся в точку вызова функции.
Инструкция return имеет следующий синтаксис:
return выражение;
В программу возвращается не само выражение, а результат его вычисления.
Для дальнейшего использования возвращаемого значения, результат выполнения функции можно присвоить к примеру переменной:
function calc(a) < return a * a; >var x = calc(5); alert(x); // 25
Инструкция return может быть расположена в любом месте функции. Как только будет достигнута инструкция return , функция возвращает значение и немедленно завершает своё выполнение. Код, расположенный после инструкции return , будет проигнорирован:
function foo() < return 1; alert('Не выполнится'); >var x = foo(); alert(x); // 1
Внутри функции можно использовать несколько инструкций return :
function check(a, b) < if(a >b) return a; else return b; > alert(check(3, 5)); // 5
Если инструкция return не указана или не указано возвращаемое значение, то функция вернёт значение undefined:
function bar() <> function foo() < return; >alert(bar()); // undefined. Инструкция return не указана alert(foo()); // undefined. Возвращаемое значение не указано
С этой темой смотрят:
- Объявление и вызов функции
- Параметры и аргументы функции
- arguments и this
- Рекурсия
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru
Возврат значений
Значения возвращаются при помощи необязательного оператора возврата. Возвращаемые значения могут быть любого типа, в том числе это могут быть массивы и объекты. Возврат приводит к завершению выполнения функции и передаче управления обратно к той строке кода, в которой данная функция была вызвана. Для получения более детальной информации ознакомьтесь с описанием return .
Замечание:
Если конструкция return не указана, то функция вернет значение NULL .
Использование выражения return
Пример #1 Использование конструкции return
function square ( $num )
return $num * $num ;
>
echo square ( 4 ); // выводит ’16’.
?>?php
Функция не может возвращать несколько значений, но аналогичного результата можно добиться, возвращая массив.
Пример #2 Возврат нескольких значений в виде массива
function small_numbers ()
return array ( 0 , 1 , 2 );
>
list ( $zero , $one , $two ) = small_numbers ();
?>?php
Для того, чтобы функция возвращала результат по ссылке, вам необходимо использовать оператор & и при описании функции, и при присвоении переменной возвращаемого значения:
Пример #3 Возврат результата по ссылке
Для получения более детальной информации о ссылках обратитесь к разделу документации Подробно о ссылках.
Объявление типов возвращаемых значений
В PHP 7 добавлена возможность объявлять тип возвращаемого значения. Аналогично объявлению типов аргументов можно задать тип значения, которое будет возвращаться функцией. Типы, которые можно объявить для возвращаемых значений те же, что и для аргументов фукнций.
Режим строгой типизации также работает для объявлении типа возвращаемого значения. В обычном режиме слабой типизации возвращаемое из функции значение приводится к корректному типу. При строгой типизации возвращаемое значение должно быть заданного типа, иначе будет выброшено исключение TypeError.
Замечание:
Если переопределяется родительский метод, возвращаемое значение дочернего метода должно быть того же типа, что и родительского. Если в родительском методе не задан тип возвращаемого значения, то и дочерний метод этот тип может не объявлять.
Примеры
Пример #4 Обычное объявление типа возвращаемого значения
// Будет возвращаться значение типа float.
var_dump ( sum ( 1 , 2 ));
?>
Результат выполнения данного примера:
float(3)
Пример #5 То же в режиме строгой типизации
function sum ( $a , $b ): int return $a + $b ;
>
var_dump ( sum ( 1 , 2 ));
var_dump ( sum ( 1 , 2.5 ));
?>
Результат выполнения данного примера:
int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 thrown in - on line 5
Пример #6 Возврат объектов
function getC (): C return new C ;
>
Результат выполнения данного примера: