Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_пяву_4.doc
Скачиваний:
101
Добавлен:
15.03.2015
Размер:
1.29 Mб
Скачать
  1. Условные выражения (оператор ?:)

Условные выражения записываются с помощью тернарного оператора ?:. Этот оператор имеет следующий формат:

выр1 ? выр2 : выр3

Здесь выр1,выр2ивыр3– выражения.

Условное выражение вычисляется следующим образом. Вначале оценивается булевское значение выражения выр1. Если его значением является true, то дальше вычисляется значение выражениявыр2и значение этого выражения становится значением всего условного выражения, в противном случае вычисляется значение выражениявыр3и его значение становится значением всего условного выражения.

В качестве примера применения условного выражения рассмотрим задачу о нахождении наибольшего значения двух вещественных чисел a и b. Ниже приведена программа, предназначенная для решения этой задачи.

/* Файл max.c */ #include<stdio.h> int main(void) { double a, b; printf(“a=”); scanf(“%lf”, &a); printf(“b=”); scanf(“%lf”, &b); printf(“max=%8.3f\n”, (a > b ? a : b)); return 0; }

Здесь использовалось то обстоятельство, что условное выражение действительно является выражением, и оно может быть использовано в качестве аргумента в вызове функции printf().

  1. Оператор запятая

Это бинарный оператор, имеющий следующий формат:

выр1 , выр2

Здесь выр1 ивыр2– выражения. Вначале вычисляется левый операнд. Значение этого операнда после его вычисления отбрасывается (исключается из рассмотрения). Затем вычисляется правый операнд. Вычисленное значение этого операнда становятся типом и значением всего выражения в целом. В месте, где расположена запятая, находится точка следования (sequence point). Это означает, что до перехода к вычислению выражениявыр2 все побочные эффекты, которые могут иметь место при вычислении выражениявыр1 должны быть завершены. Оператор запятая в основном применяется в инструкцииforв ее первом и третьем выражениях (см. 1.29).

  1. Оператор sizeof

Этот оператор в качестве своего результата возвращает размер памяти, занимаемый его операндом. Оператор используется в двух формах:

● sizeof(type)

● sizeof expr

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

Приведем примеры использования рассматриваемого оператора:

printf(“sizeof 2 = %d\n”, sizeof 2); printf(“sizeof(double) = %d\n”, sizeof(double));

  1. Инструкции перехода

Инструкции перехода приводят к безусловной передаче управления в другую точку программы. К этой категории инструкций в языке Си относятся следующие инструкции:

break,

continue,

goto,

return.

    1. Инструкция break

Эта инструкция используется только в теле инструкций for,while,dowhileиswitch.Ее назначение состоит в завершении выполнения инструкций, внутри которых она расположена. При использовании инструкцииbreakво вложенных циклах завершит свою работу только текущий цикл. После этого управление передается циклу, находящемуся “на один уровень выше”.

    1. Инструкция continue

Эта инструкция используется только в теле циклических инструкций for,whileиdowhile. Ее выполнение приводит к завершению очередного шага цикла.

    1. Инструкция goto

Выполнение этой инструкции состоит в прерывании естественного порядка выполнения программы и безусловной передаче управления. Рассматриваемая инструкция состоит из двух частей: зарезервированного слова gotoи имени метки. В качестве имени метки используется идентификатор. Пример инструкцииgoto:

gotoerror;

Чтобы эта инструкция выполнялась правильно, в программе должна встретиться инструкция, помеченная меткой error. Приведем пример такой инструкции:

error : printf(“Ошибка ввода\n”);

    1. Инструкция return

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

return [выр];

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

double max(double a, double b) { return ((a > b) ? a : b); }

В теле рассматриваемой функции max() находится только одна инструкция – инструкция return. Эта инструкция выполняет два действия. Во-первых, инструкция формирует с помощью условного выражения возвращаемый результат. Во-вторых, она прекращает вычисления в функции max() и передает управление в точку вызова функции.