Как выйти из функции void c
Перейти к содержимому

Как выйти из функции void c

Как выйти из функции void c

Возможно ли, Выйти из функции, если она возвращает «void». Что-то вроде «return», только без возвращения значения, просто перейти к коду после вызова функции.
Спасибо.

Re: Выйти из функции, если она возвращает «void»?

От: VuDZ
Дата: 26.02.02 23:58
Оценка: 3 (1)

Здравствуйте Алексей, Вы писали:

А>Возможно ли, Выйти из функции, если она возвращает «void». Что-то вроде «return», только без возвращения значения, просто перейти к коду после вызова функции.
А>Спасибо.

void Foo( void )< // do something if (bError) return; // do something another >

Re: Выйти из функции, если она возвращает «void»?

От: SDA
Дата: 26.02.02 23:58
Оценка: 3 (1)

Здравствуйте Алексей, Вы писали:

А>Возможно ли, Выйти из функции, если она возвращает «void». Что-то вроде «return», только без возвращения значения, просто перейти к коду после вызова функции.
А>Спасибо.

void MyFunc() < if(false) return; >
return;

Выход из функции

Имеется два способа окончания работы функции и передачи управления вызывающему коду. Первый способ предполагает достижение последнего оператора функции, после чего работа функции заканчивается при встрече >. (Конечно, фигурной скобки на самом деле нет в объектном коде, но никто не мешает нам так думать.) Например, следующая функция выводит на экран строку:

void pr_reverse(char *s)
register int t;
for(t=strlen(s) -1; t > -1; t-) printf («%c», s [t]);
>

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

Тем не менее, не многие функции используют данный метод окончания своего выполнения. Большинство функций используют оператор return для окончания выполнения с целью возврата значения или упрощения кода функции и увеличения его эффективности путем создания нескольких точек выхода. Важно запомнить, что функция может иметь несколько операторов return. Например, функция, показанная ниже, возвращает или индекс первого появления подстроки, указываемой в s1, в строке, указываемой в s2, или —1, если не обнаружено совпадений:

int find_substr (char *s1, char *s2)
register int t;
char *p, *p2;
for(t=0; s1[t]; t++)
p = &s1[t];
p2 = s2;
while (*p2 && *p2==*p)
p++;
p2++;
>
if(!*p2) return t;
>
return -1;
>

Надо обратить внимание, как два оператора return упрощают функцию.

EXIT()

Функция exit(), находящаяся в стандартной библиотеке, вызывает немедленное окончание работы программы. Поскольку функция exit() останавливает выполнение программы и форсирует возврат в операционную систему, она используется для управления устройствами, и ее использует подавляющее большинство программ. Функция exit() имеет следующий вид:

void exit (int статус);

Она использует заголовочный файл stdlib.h. Значение статуса возвращается в операционную систему.

Для индикации корректности завершения работы exit() традиционно вызывается с аргументом 0.

Другие аргументы используются для индикации различного рода ошибок. Можно также использовать предопределенные макросы EXIT_SUCCESS и EXIT_FAILURE в качестве значений для статуса.

exit() используется, когда условия выполнения программы неудовлетворительны. Например компьютерная игра может требовать специальный графический адаптер. Функция main() данной игры может выглядеть следующим образом:

#include
int main(void)
if (!special_adaptor()) exit(1);
play ();
return 0;
>

где special_adaptor() — это определенная пользователем функция, возвращающая истину, если необходимый адаптер присутствует. Если карта в системе отсутствует, то данная функция возвращает ложь и программа завершает работу.

В другом примере exit() используется для выхода из программы и возврата в операционную систему

void menu(void)
char ch;
printf («1. Check Spelling\n»);
printf («2. Correct Spelling, Errors\n»);
printf(«3. Display Spelling Errors\n»);
printf(«4. Quit\n»);
printf(» Enter your choice: «);
do ch = getchar(); /* чтение клавиатуры */
switch(ch)
case ‘1’:
check_spelling();
break;
case ‘2’:
correct_errors();
break;
case ‘3’:
display_errors ();
break;
case ‘4’:
exit(0); /* возврат в ОС*/
>
>
while(ch!=’1′ && ch!=’2′ && ch!=’3′);
>

Как выйти из функции при выполнении условия?

и нужно чтобы в функции events если выполниться условие то она бы вышла или бы скипнула итерацию как например contunie. Что можно использовать?

Отслеживать
задан 22 ноя 2021 в 12:01
53 9 9 бронзовых знаков

Где вам нужно скипнуть итерацию? Конкретизируйте вопрос, допустим выполнился метод events , от этого метод Update завершится или перейдет к следующей итерации?

22 ноя 2021 в 12:16
Если вам нужно скип итерации делать внутри events , то в условии добавьте просто return;
22 ноя 2021 в 12:18

например если в events выполниться 1 условие то он просто выйдет не продолжая выполнять остальной код

22 ноя 2021 в 12:18
Остальной код — это какой? Внутри events или внутри Update ?
22 ноя 2021 в 12:19

Такие вопросы неприлично задавать. Что бы самому на него ответить — нужны вообще минимальные знания языка программирования. Простите, но Вам рановато работать в Unity. Для начала Вам следует укрепить свои знания C#. Иначе в дальнейшем Вы будете чаще и чаще сталкиваться с «нерешаемыми самостоятельно проблемами».

22 ноя 2021 в 14:52

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Чтобы выйти из метода можно использовать return; Заметьте, что если метод будет возвращать какое-то значение, то использование обычного return; не будет работать, компилятор потребует какое-то значение.

private void events() < if(/*условие*/) < //код return; //код дальше не будет выполняться, произойдет выход из метода. >> 

Отслеживать
ответ дан 22 ноя 2021 в 12:21
Aarnihauta Aarnihauta
2,197 3 3 золотых знака 9 9 серебряных знаков 22 22 бронзовых знака
не думал что можно использовать return без значения. спасибо
22 ноя 2021 в 12:22
@ULYANARSL только если метод void
22 ноя 2021 в 12:23

Один из принципов структурного программирования гласит, что все подпрограммы(в нашем случае методы) должны иметь один вход и один выход. Лучше переписать метод без явного return.

22 июн 2022 в 1:52

@VitaliyZlobin не всегда стоит придерживаться принципов и прочей лабуды которую напридумывали.. не вижу ничего плохого в том, что выход из метода будет по какому-то условию

22 июн 2022 в 4:15

@Aarnihauta это не на придумывали лабуды, а опыт топов и основателей программирования, таких как Эдсгер Дейкстра)) «не всегда стоит придерживаться принципов» — не всегда, но всегда нужно это делать осознанно и обоснованно, в данном случае обоснования нет, т.к. есть возможность обеспечить один выход из метода — это, как минимум, облегчит этапы отладки и тестирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *