Оператор перехода

Особенности арифметических операций

Цикл do-while часто используется в функциях выбора пунктов меню. Если пользователь вводит допустимое значение, оно возвращается в качестве значения функции. В противном

Цикл do-while

Случае цикл требует повторить ввод.

В отличие от циклов for и while, которые проверяют свое условие перед итерацией, do-while делает это после нее. Поэтому цикл do-while всегда выполняется как минимум один раз. Общая форма цикла do-while следующая:

do {оператор;} while (условие);

Если оператор не является блоком, фигурные скобки не обязательны, но их почти всегда ставят, чтобы оператор достаточно наглядно отделялся от условия. Итерации оператора do-while выполняются, пока условие не примет значение ЛОЖЬ.

В следующем примере в цикле do-while числа считываются с клавиатуры, пока не встретится число, меньшее или равное 100:

do { scanf("%d", &num);} while(num > 100);

При использовании деления надо помнить, что при делении целого числа на целое остаток от деления отбрасывается, таким образом, 7/4 будет равно 1. Если же надо получить вещественное число и не отбрасывать остаток, делимое или делитель надо преобразовать к вещественной

форме.

Например:

 

float x;

i = 7;

x = i / 4; // x=1, делится целое на целое

x = i / 4.; // x=1.75, делится целое на дробное

x =(float) i / 4; // x=1.75, делится дробное на целое

n = 7. / 4.; // n=1, результат записывается в

// целую переменную

Наибольшие сложности из всех действий вызывает взятие остатка. Если надо вычислить оста-

ток от деления переменной a на переменную b и результат записать в переменную ostatok,

то оператор присваивания выглядит так:

ostatok = a % b;

В языке С определены четыре оператора перехода:

· return,

· goto,

· break и

· continue.

 

Операторы return и goto можно использовать в любом месте внутри функции. Операторы break и continue можно использовать в любом из операторов цикла. Как указывалось ранее в этой главе, break можно также использовать в операторе switch.

Оператор return

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

Стандарт С89 допускает наличие оператора return без значения, даже если тип функции отличен от void. В этом случае функция возвращает неопределенное значение. Но что касается языков С99 и C++, если тип функции отличен от void, то ее оператор return обязательно должен иметь значение. Конечно, и в программе на С89 отсутствие возвращаемого значения в функции, тип которой отличен от void, является признаком плохого стиля!

Общая форма оператора return следующая:

return выражение;

Выражение присутствует только в том случае, если функция возвращает значение. Это значение выражения становится возвращаемым значением функции.

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

Закрывающаяся фигурная скобка } также вызывает выход из функции. Выход программы на нее эквивалентен оператору return без значения. В этом случае функция, тип которой отличен от void, возвращает неопределенное значение.

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