Оператор 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 вообще кроме окончания функцыи?
Зачем нужен return вообще кроме окончания функции?
Знаю что для возвращения например return 2+2;
На протяжения всего JS я юзал его только что бы закончить функцию или условие.
Но не понимаю суть, пожалуйста об ясните.
Я вот не как не могу разобраться. 🙁
- Вопрос задан более трёх лет назад
- 3508 просмотров
7 комментариев
Простой 7 комментариев

для возвращения результата исполнения функции

Drino955 Jug @Drino955 Автор вопроса
Михаил, ну я это понимаю, но пожалуйста об’ясни.
Как он применяется ?

Алексей Ярков @yarkov Куратор тега JavaScript
Dimazik123 Nik, так и применяется. В конце функции пишешь return ЧТОТОТАМ .

Dimazik123 Nik, У меня есть ложка, я знаю что ей едят еду, но как её применять, я НЕПОНИМАЮ

Drino955 Jug @Drino955 Автор вопроса
Михаил, так и есть с return. Я просто не понимаю как его можно применить

Dimazik123 Nik, изучайте дальше, тогда и поймете зачем что-то где-то возвращать
Нуу.. return можно использовать для задания какого либо значения, и что бы потом к тому значению что будет в return в дальнейшем обращаться в самом коде. Давайте попробую показать пример.
function add(a, b) < return a+b; >function subtract(a, b) < return a-b; >var num1 = add(2, 2); var answer = subtract(num1, 3); console.log(answer);
Думаю вы видите как используеться тут return
Решения вопроса 1

alex @potapchino
функция всегда что-то возвращает. чтобы указать, что именно функция должна возвратить, используется ключевое слово return. это и есть его суть. даже если его(return) нет в теле функции, функция все равно вернет undefined по умолчанию.
spoiler
эта функция вернет undefined, т.к. ключевого слова return нет.
function func() < var a = 5; var b = 10; var sum = a + b; >var result = func() console.log(result) // undefined
эта функция вернет строку ‘i love js’, т.к. вы явно на это указали с помощью ключевого слова return.
function func() < var a = 5; var b = 10; var sum = a + b; return 'I love js'; >var result = func() console.log(result) // 'I love js'
вернет сумму двух чисел
function func() < var a = 5; var b = 10; var sum = a + b; return sum; >var result = func() console.log(result) // 15
вернет сумму двух чисел
function func(a, b) < var sum = a + b; return sum; >var result = func(3, 7) console.log(result) // 10
function func(a, b) < return a + b; >var result = func(2, 2) console.log(result) // 4
следующие две функции возвращают undefined. первая явно, вторая неявно
function func1() < return undefined; >var result = func1() console.log(result) // undefined function func2() < >var result = func2() console.log(result) // undefined
вернет другую функцию
function func() < return function () < return 'ааа сложнааа' >; > var result = func() var result2 = result() console.log(result) // function func() console.log(result2) // 'ааа сложнааа' console.log(func()()) // 'ааа сложнааа'
как только в функции встречается это ключевое слово, интерпретатор немедленно останваливает выполненние функции(выходит из нее) и возвращает то что написано после этого ключевого слова. именно поэтому этот цикл выполнит всего лишь одну итерацаю, а не 100, как и должно, и вернет 1.
function func() < for (var i = 1; i < 100; i = i + 1) < return i >> var result = func() console.log(result) // 1
а вот так вернет 100
function func() < for (var i = 1; i < 100; i = i + 1) < >return i > var result = func() console.log(result) // 100
а вот так вернет undefined
function func() < for (var i = 1; i < 100; i = i + 1) < >return > var result = func() console.log(result) // undefined
Для чего нужен return?
Возможно, я невероятно глупый человек (хоть я себя таковым и не считаю), но хоть убейте не могу понять, что делает запись «return 0», «return *какая-то переменная*» и т.д.
Смотрю видео-обучение и там человек написал вот такой код
#include void print (float number) < printf ("Your number is %.2f\n", number); >float del (float a, float b) < float res; if (b != 0) res = a / b; else res = 0; return res; >int main ()
Читал вопросы других людей, и все равно не могу понять. Как я понял, одна из функций записи return — это остановка данной функции (это если написать 0).
Но что делает «return res» во втором куске кода? То есть в переменную res записывается деление числа А и Б. А потом оно куда-то там возвращается.. (Я чайник тот еще, поэтому если можете объяснить, то как можно понятнее). Спасибо.
- Вопрос задан более трёх лет назад
- 7353 просмотра
2 комментария
Простой 2 комментария
return
Оператор return завершает выполнение текущей функции и возвращает её значение.
Интерактивный пример
Синтаксис
return [[выражение]];
Выражение, значение которого будет возвращено. Если не указано, вместо него возвращается undefined .
Описание
При вызове оператора return в функции её выполнение прекращается. Указанное значение возвращается в место вызова функции. Например, приведённая ниже функция возвращает возведённое в квадрат значение своего аргумента, x (где x – это число):
function square(x) return x * x; > var demo = square(3); // значение demo будет равняться 9
Если возвращаемое значение не указано, вместо него возвращается undefined .
Следующие выражения всегда прерывают выполнение функции:
return; return true; return false; return x; return x + y / 3;
Автоматическая расстановка точек с запятыми
На выражение return влияет автоматическая расстановка точек с запятыми (ASI). Разрыв строки не допускается между ключевым словом return и выражением.
return a + b;
трансформируется ASI в:
return; a + b;
В консоли появится предупреждение «unreachable code after return statement».
Примечание: Начиная с Gecko 40, предупреждение в консоли появляется, если обнаружен недостижимый код после return .
Для того, чтобы избежать данной проблемы (предотвратить ASI), можно использовать скобки:
return ( a + b; );
Примеры
Прерывание функции
Функция немедленно останавливается в точке, где вызывается return .
function counter() for (var count = 1; ; count++) // бесконечный цикл console.log(count + "A"); // до 5 if (count === 5) return; > console.log(count + "B"); // до 4 > console.log(count + "C"); // никогда не появляется > counter(); // Выводит: // 1A // 1B // 2A // 2B // 3A // 3B // 4A // 4B // 5A
Возвращение функции
Смотрите также статью о замыканиях.
function magic(x) return function calc(x) return x * 42; >; > var answer = magic(); answer(1337); // 56154
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-return-statement |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
- Product help
- Report an issue
Our communities
Developers
- Web Technologies
- Learn Web Development
- MDN Plus
- Hacks Blog
- Website Privacy Notice
- Cookies
- Legal
- Community Participation Guidelines
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.