2012-05-21 3 views
1

У меня создалось впечатление, что любая функция в C будет поддерживать только один оператор возврата, пока я не перейду через несколько заметок, где упоминалось несколько операторов возврата. Мой вопрос заключается в том, как работают эти множественные возвратные операторы. Любая помощь предоставляется. Благодаря!Как работают несколько операторов возврата?

ответ

4

Выполненный первый оператор return прекратит выполнение функции, и ее значение будет использовано.

Однако, очевидно, может быть несколько путей выполнения - и они могут возвращать разные значения. Фактически в невольной функции каждый возможный путь выполнения имеет, чтобы вернуть что-то. Самый простой способ добиться этого, очевидно, имеет оператор return в самом конце функции.

if(foo) 
    return 23; 
else 
    return 42; 

Есть some arguments за то, что только один оператор возврата в коде; подумайте о том, чтобы прочитать статью, если кто-либо из вас обратится к вам. Хорошим примером является код, который всегда необходимо выполнить для очистки. В этом случае вы только захотите вернуться после того, как это было сделано - так вы установите переменную для возвращаемого значения и используйте goto, чтобы перейти в раздел «Очистка и возврат» в конце функции, если вам нужно вернуться рано.

+3

Я считаю, что 'else' является излишним :) –

0

Независимо от того, что обратное попало, это приведет к выходу функции и управлению, которая будет возвращена вызывающему абоненту.

Например:

int foo(int x) 
{ 
    if(x == 0) return 0; 
    return 1; 
} 

В этом случае, если x является 0, то первое возвращение будет хит и 0 будут возвращены. Если передается любое другое число, возвращается второй возврат и возвращается 1.

0

Вы имеете в виду вот это?

int function(int input) 
{ 
    if (input == 1) return 1; 
    else return 0; 
} 

Ну, они работают как операторы возврата. Конечно, имеет смысл иметь один оператор return для каждого пути кода в вашей функции.

0

Если в других логических блоках есть значения, тогда вы могли бы иметь несколько возвратов в функции.

но что-то вроде: return 1; return 2;

не так много.

0

Ну, первый оператор возврата, который он встретит, остановит дальнейшее выполнение и возвращает управление функции вызывающего абонента. если вы хотите получить доступ к нескольким значениям после обработки в функции, то вы можете использовать struct или массивы этих объектов, которые вы можете вернуть frm, и, таким образом, вы получите обновленные значения как целые объекты struct/array.

+0

не могли бы вы выделиться из-за большей ясности. Благодаря! – Shash

+0

хорошо, вы можете посетить here для получения дополнительной информации. отправьте возвращаемый объект типа структуры, тогда вы можете получить все значения, измененные вами в вашей функции – Neji

-1

Правило таково: не пустое изображение, невозможно достичь конца функции без согласования оператора возврата.

При выполнении функции fonction, когда вы нажимаете оператор return, вы выходите из функции независимо от того, где вы находитесь в функции (внутри a или a if ...). Поэтому, если в одной ветви есть два оператора return, учитывается только первый.

Смежные вопросы