Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_Shpory_moi.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.15 Mб
Скачать

32 Оператор безусловного перехода goto

В языке Си предусмотрен оператор goto, хотя в большинстве случаев можно обойтись без него. Общий вид оператора goto метка; Он предназначен для передачи управления на оператор, помеченный меткой. Метка представляет собой идентификатор, оформленный по всем правилам идентификации переменных с символом «двоеточие» после него, например, пустой помеченный оператор:m1 : ; Область действия метки - функция, где эта метка определена. Программа с goto может быть написана без него за счет повторения

некоторых проверок и введения дополнительных переменных. Наиболее характерный случай использования оператора goto - выполнение прерывания (выхода) во вложенной структуре при возникновении грубых неисправимых ошибок во входных данных. И в этом случае необходимо выйти из двух (или более) циклов, где нельзя использовать непосредственно оператор break, т.к. он прерывает только самый внутренний цикл:

for (...)

for (...) { ...

if ( ошибка ) goto Еrror;

}

...

Еrror : - операторы для устранения ошибки;

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

Оператор continue

Этот оператор может использоваться во всех типах циклов, но не в операторах switch. Наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей, т.е. досрочное за-

вершение текущего шага и переход к следующему шагу. В циклах while и do это означает непосредственный переход к проверочной части. В цикле for управление передается на шаг коррекции, т.е.

модификации выражения 3. Фрагмент программы обработки только положительных элементов

массива a, отрицательные значения пропускаются:

for ( i = 0; i<n; i++) {

if( a[i]<0) continue;

обработка положительных элементов;

}

Оператор break

Оператор break производит экстренный выход из самого внутреннего цикла или оператора switch, к которому он принадлежит, и передает управление первому оператору, следующему за текущим оператором.

Оператор return

Оператор return; производит досрочный выход из текущей функции. Он также возвращает значение результата функции: return выражение; В функциях, не возвращающих результат, он неявно присутствует

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

33 Побитовые логические операции, операции над битами

В Си предусмотрен набор операций для работы с отдельными битами. Эти операции нельзя применять к переменным вещественного типа.

Операции над битами и их обозначения:

~ - дополнение (унарная операция); инвертирование (одноместная операция);

& - побитовое И - конъюнкция;

| - побитовое включающее ИЛИ - дизъюнкция;

^ - побитовое исключающее ИЛИ - сложение по модулю 2;

>> - сдвиг вправо;

<< - сдвиг влево.

Общий вид операции инвертирования:

~ <выражение>

Остальные операции над битами имеют вид

<выражение 1> <знак операции> <выражение 2>

34 Операции сравнения. Логические операции. Унарные операции.

Операции сравнения

== - равно или эквивалентно; != - не равно; < - меньше; <= - меньше либо равно; > - больше; >= - больше либо равно. Пары символов соответствующих операций разделять нельзя.

Общий вид операций отношений:

<выражение 1> <знак операции> <выражение 2>

Общие правила:

- операндами могут быть любые базовые (скалярные) типы;

- значения выражений перед сравнением преобразуются к одному типу;

- результат операции отношения - значение 1, если отношение истинно, или 0 в противном случае (ложно). Следовательно, операция отношения может использоваться в любых арифметических выражениях.

Логические операции

Логические операции (в порядке убывания относительного приорите-та) и их обозначения:

! - отрицание (логическое НЕТ);

&& - конъюнкция (логическое И);

|| - дизъюнкция (логическое ИЛИ).

Общий вид операции отрицания:

!<выражение>

Общий вид операций конъюнкции и дизъюнкции

<выражение 1> <операция> <выражение 2>

Выражения с унарными операциями группируют справа налво: унарное_выражение: унарная_операция выражение выражение ++ выражение – sizeof выражение sizeof ( имя_типа ) ( имя_типа ) выражение простое_имя_типа ( список_выражений ) new имя_типа инициализатор opt new ( имя_типа ) delete выражение delete [ выражение ] выражение унарная_операция: одна из * amp; – ! ~ ++ –

Унарная операция * означает косвенное обращение: выражение должно быть указателем и результатом будет lvalue, ссылающееся на объект, на который указывает выражение. Если выражение имеет тип «указатель на ...», то тип результата есть «...». Результатом унарной операции amp; является указатель на объект, на который ссылается операнд. Операнд должен быть lvalue. Если выражение имеет тип «...», то тип результата есть «указатель на ...». Результатом унарной операции + является значение ее опранда после выполнения обычных арифметических преобразований. Операнд должен быть арифметического типа.

Результатом унарной операции – является отрицательное значение ее операнда. Операнд должен иметь целый тип. Выпоняются обычные арифметические преобразования. Отрицательое значение беззнаковой величины вычислятся посредством вычитния ее значения из 2n, где n -число битов в целом типа int.

Результатом операции логического отрицания ! является 1, если значение операнда 0, и 0, если значение операнда не 0. Результат имеет тип int. Применима к любому арифметическому типу или к указателям.

Операция ~ дает дополнение значения операнда до единицы. Выполняются обычные арифметические преобразования. Операнд должен иметь целочисленный тип.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]