Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Си. Лабораторные работы / Справочник. Часть 1 (СПбГУТ).doc
Скачиваний:
49
Добавлен:
10.09.2019
Размер:
949.25 Кб
Скачать

1.19. Условные выражения (оператор ?:)

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

выр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.20. Оператор запятая

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

выр1 , выр2

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

1.21. Оператор sizeof

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

● sizeof(type)

● sizeof expr

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

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

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

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

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

break,

continue,

goto,

return.

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

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

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

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

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

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

goto error;

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

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