Return from void functions in C++
The void functions are called void because they do not return anything. “A void function cannot return anything” this statement is not always true. From a void function, we cannot return any values, but we can return something other than values. Some of them are like below.
A void function can return
A void function cannot return any values. But we can use the return statement. It indicates that the function is terminated. It increases the readability of code.
Example Code
Output
A void function can return another void function
In this approach, one void function can call another void function while it is terminating. The code will look like this.
Операторы перехода

Язык C# предлагает несколько операторов, позволяющих немедленно перейти на другую строку программы. Давайте их рассмотрим.
Оператор goto
Имеющийся в C# оператор goto представляет собой оператор безусловного перехода. Когда в программе встречается оператор goto, ее выполнение переходит непосредственно к тому месту, на которое указывает этот оператор. Он уже давно «вышел из употребления» в программировании, поскольку способствует созданию «макаронного» кода. Хотя в некоторых случаях он оказывается удобным и дает определенные преимущества, если используется благоразумно. Главный недостаток оператора goto с точки зрения программирования заключается в том, что он вносит в программу беспорядок и делает ее практически неудобочитаемой. Но иногда применение оператора goto может, скорее, прояснить, чем запутать ход выполнения программы.
Для выполнения оператора goto требуется метка — действительный в C# идентификатор с двоеточием. Метка должна находиться в том же методе, где и оператор goto, а также в пределах той же самой области действия.
Пример использования оператора goto:

Репутация оператора goto такова, что в большинстве случаев его применение категорически осуждается. Вообще говоря, он, конечно, не вписывается в рамки хорошей практики объектно-ориентированного программирования.
Оператор break
С помощью оператора break можно специально организовать немедленный выход из цикла в обход любого кода, оставшегося в теле цикла, а также минуя проверку условия цикла. Когда в теле цикла встречается оператор break, цикл завершается, а выполнение программы возобновляется с оператора, следующего после этого цикла. Оператор break можно применять в любом цикле, предусмотренном в C#.
Обратите внимание если оператор break применяется в целом ряде вложенных циклов, то он прерывает выполнение только самого внутреннего цикла.
В отношении оператора break необходимо также иметь в виду следующее. Во-первых, в теле цикла может присутствовать несколько операторов break, но применять их следует очень аккуратно, поскольку чрезмерное количество операторов break обычно приводит к нарушению нормальной структуры кода. И во-вторых, оператор break, выполняющий выход из оператора switch, оказывает воздействие только на этот оператор, но не на объемлющие его циклы.
Оператор continue
С помощью оператора continue можно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Оператор continue осуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, оператор continue служит своего рода дополнением оператора break.
В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, после чего продолжается процесс выполнения цикла. А в цикле for сначала вычисляется итерационное выражение, затем условное выражение, после чего цикл продолжается:

Оператор continue редко находит удачное применение, в частности, потому, что в C# предоставляется богатый набор операторов цикла, удовлетворяющих большую часть прикладных потребностей. Но в тех особых случаях, когда требуется преждевременное прерывание шага итерации цикла, оператор continue предоставляет структурированный способ осуществления такого прерывания.
Оператор return
Оператор return организует возврат из метода. Его можно также использовать для возврата значения. Имеются две формы оператора return: одна — для методов типа void, т.е. тех методов, которые не возвращают значения, а другая — для методов, возвращающих конкретные значения.
Для немедленного завершения метода типа void достаточно воспользоваться следующей формой оператора return:
Когда выполняется этот оператор, управление возвращается вызывающей части программы, а оставшийся в методе код пропускается.
Для возврата значения из метода в вызывающую часть программы служит следующая форма оператора return:
Как выйти из функции void в C ++?
Как можно преждевременно выйти из функции без возврата значения, если это функция void? У меня есть метод void, которому не нужно выполнять свой код, если выполняется определенное условие. Я действительно не хочу менять метод, чтобы действительно возвращать значение.
Несмотря на то, что это действительно простой вопрос, я проголосовал за него, потому что у меня была такая же проблема, когда я писал свою первую программу на C 🙂 — rmeador
@itsbunnies: Как уже упоминалось в другом месте, нет слишком простых вопросов по программированию, чтобы их можно было задать на SO. Если у вас были проблемы с этим, то же самое было у кого-то в прошлом и у кого-то в будущем. — Bill the Lizard
@BilltheLizard: А как насчет первой программы, которая всегда была та проблема? У кого была эта проблема в его мимо? 😉 — flarn2006
как раз сам задал этот вопрос 🙂 — moldovean
Обратите внимание, что вы всегда можете переписать функцию, чтобы она всегда возвращалась внизу, что является принципом структурированного программирования (одна точка входа, одна точка выхода), — Malcolm McLean
Как правильно использовать void и return в С#?
В Console.WriteLine(summaNumbers(10)) возникает ошибка: не удается преобразовать из «void» в «bool».
Второй вариант задачи. Возвращает уже сумму чисел кратных 3 и 5.
Здесь возникает ошибка в методе summaNumbers(int x): не все ветви кода возвращают значение.
Вопросы:
1. Почему метод Console.WriteLine() пытается провести преобразования, он ведь должен просто вывести в консоль?
2. Где я в методе summaNumbers(int x) не поставил return.
3. Пробовал менять тип возвращаемого значения метода summaNumbers(int x): void, int, ставил return в разные строчки кода, все равно ошибка. Объясните как вообще использовать void и return, или дайте ссылку где почитать.
4. Может быть ошибка алгоритме или в других частях кода, подскажите.
Спасибо.
- Вопрос задан более трёх лет назад
- 4634 просмотра
- Вконтакте
- Вконтакте

Со вторым вариантом разобрался, поставил return как вы написали, все заработало. Но вот с первым вариантом — я хочу чтобы метод все числа кратные 3 и 5 просто вывел в консоль, при таком исполнении:
выводится 3,5,6,9,9 . две 9-ки, Console.WriteLine выводит их два раза (указал в коде если я правильно понял), а нужно 1 раз т.е. 3,5,6,9.
Если делаю так.
Т.е. при определении метода ошибок нет, а при его вызове есть.
Как вызвать метод чтобы он просто вывел список чисел в консоль?
Рамиль А: вам не нужно делать два вывода. то есть, по вашей логике выглядит, будто writeline выводит что-либо только в main. но он выводит текст в тот момент, когда вы его вызовете. то есть, в вашем случае main может выглядеть просто
а numbers как во втором варианте. То есть, вам не нужно запоминать и возвращать значение, если хотите просто вывести (тем более, что их несколько). Просто вызовите метод, которые сделает всё, что нужно. А вот если есть в планах потом что-то делать с этими числами, то нужно возвращать, и тогда возвращаемое значение, в самом простом варианте — просто массив чисел (int[]), иначе вернётся только одно, или последнее. Кстати, вот почему две девятки выводились. Сначала в методе numbers вы выводили в цикле все числа. И каждое из них записывалось в переменную temp, переопределяя предыдущую. А затем этот temp возвращался и выводился, а так как раз лежало последнее число.