изявление за връщане
Операторът return прекратява функцията, в която се появява, и връща контрола на извикващата функция. Контролът се прехвърля към функцията за повикване в точката непосредствено след повикването. Стойността на израз, ако има такава, се връща на извикващата функция. Ако изразът е пропуснат, върнатата стойност на функцията е недефинирана.
void draw(int,int);
Основната функция извиква две функции, sq и draw. Функцията sq връща стойността x*x в main. Връщаната стойност се присвоява на променливата y. Функцията draw е декларирана като void функция и не връща стойност. Опитът за присвояване на върнатата стойност на функцията за изтегляне би довел до грешка.
Изразът за оператор за връщане е ограден в скоби, както е показано в примера. Езикът не изисква скоби.
Изявление за без връщане
Ако изразът за връщане не се появи в дефиницията на функцията, тогава контролът автоматично се прехвърля към извикващата функция, след като се изпълни последният оператор в извиканата функция. Върнатата стойност на извиканата функция не е дефинирана. Ако не се изисква връщана стойност, тогава функцията трябва да бъде декларирана с тип връщане void.
изявление за превключване
Операторът switch прехвърля контрола на един от операторите в тялото си. Операторът, който получава управление, е операторът, чийто case константен израз е равен на стойността на switch израза в скоби.
Изпълнението на тялото на оператора започва с избрания оператор и продължава до края на тялото или докато следващият оператор прехвърли контрола извън тялото.
Инструкцията по подразбиране ще бъде изпълнена, ако изразът на case константата не е равен на стойността на израза switch. Ако операторът по подразбиране е пропуснат и съответният случай не е намерен, тогава няма изпълним оператор в тялото на превключвателя. превключвател-изразът е цяло число с размер int или по-кратък. Може да бъде и enum стойност. Ако е по-кратък от int, той се разширява до int.
Всеки case постоянен израз се преобразува в типа на израз за превключване. Стойността на всеки израз на регистр-константа трябва да бъде уникален в тялото на оператора.
Етикетите case и default в тялото на оператор switch са приложими само при първоначалната проверка, когато се определя началната точка за изпълнение на тялото на оператора. Всички оператори, появяващи се между началния оператор и края на тялото, се изпълняват независимо от техните етикети, освен ако някой от операторите не прехвърли контрола от тялото на switch оператора.
В първия пример и трите оператора в тялото на превключвателя се изпълняват, ако c е равно на 'A'. Контролът се прехвърля към първия оператор capa++, след което операторите се изпълняват в реда, в който се появяват в тялото.
Ако c е равно на 'a', тогава променливите lettera и total се увеличават. И накрая, ако c не е нито „A“, нито „a“, тогава се увеличава само общата променлива.
Във втория пример, в тялото на switch, всеки оператор е последван от оператора break. Операторът break принуждава излизане от превключвателя, след като един от тези оператори е бил изпълнен. Последният оператор за прекъсване не е задължителен, защото без него контролът ще се прехвърли от тялото към края на съставния оператор, но е включен за последователност.
Изявление за тяло на превключвател може да бъде етикетирано с множество етикети, както е показано в следния пример:
case 'f': hexcvt(c);
Въпреки че всеки оператор в тялото на оператор switch може да бъде етикетиран, не е необходим оператор, за да се появи етикетът. Немаркираните твърдения могат да се смесват с етикетирани твърдения. Трябва да се помни обаче, че ако командата switch е преминалаконтрол към един от операторите на неговото тяло, тогава всички оператори, следващи го в блока, се изпълняват, независимо от техните етикети.