Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YAZbIki.doc
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
758.78 Кб
Скачать

5.13. Условная операция

условное_выражение:

выражение ? выражение : выражение

Условные выражения группируются справа налево. Первое выражение вычисляется; если его значение отлично от 0, результат будет равен значению второго выражения, в противном случае - значению третьего выражения. Если возможно, выполняются обычные арифметические преобразования, чтобы привести второй и третий операнды к одному типу. Если они являются структурами или объединениями одного типа, результат будет структурой или объединением. Если они являются указателями одного типа, результат будет иметь тот же тип; в противном случае один из операндов должен быть указателем, а другой - константой 0; результат же имеет тип указателя. Вычисляется только одно из выражений - второе или третье.  

К началу главы

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

Операция присваивания определена в двух видах: простое и составное присваивание.

При простом присваивании, обозначаемом знаком (=), значение левого операнда заменяется значением правого операнда с соответствующим преобразованием типа правого операнда.

Структура оператора x=W,где х – переменная; W – выражение, например, x=2; y=k–8.

В приведенной структуре оператора W является выражением, поэтому оно может содержать и операции присваивания. Если в выражении присутствуют несколько операций присваивания, то они выполняются справа налево, например, x=y=z=6.8;

При составном присваивании используются следующие операции:

+=, –=, *=, /=, %=.

Формат операции составного присваивания: x OP W

где x – переменная, OP – операция, W – выражение.

В составном присваивании вначале выполняется операция над x и W, а затем результат присваивается переменной x.

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

Таблица 3.1

++, ––

Справа налево

Порядок выполнения операций одного уровня

*, /, %

Слева направо

+, –

Слева направо

=,*=,/=,%=,+=,–=

Справа налево

Вопрос 8

8. Условные операторы языка C. Оператор безусловного перехода.

7.3. Условный оператор if

Имеется два варианта условного оператора:

if ( выражение ) оператор

if ( выражение ) оператор else оператор

В обоих вариантах сначала вычисляется выражение; если результат оказывается ненулевым, выполняется первый оператор. Во втором варианте условного оператора, если значение выражения равно 0, выполняется второй оператор. Синтаксическая неоднозначность else разрешается путем присоединения else к самому внутреннему условному оператору, которому часть else еще не сопоставлена.

7.7. Оператор выбора switch

Выполнение оператора выбора switch приводит к передаче управления на один из нескольких вложенных операторов в зависимости от значения выражения. Оператор выбора имеет вид

switch ( выражение ) оператор

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

case константное_выражение :

Типом константного_выражениядолжен быть int. Никакие дваконстантных_выраженияв одном операторе switch не могут иметь одинаковые значения. Точное определениеконстантных_выраженийсодержится в разделе КОНСТАНТНЫЕ ВЫРАЖЕНИЯ.

Кроме того, можно задать не более одного оператора с префиксом вида

default :

который принято помещать после всех операторов с префиксами case.

При выполнении оператора switch значение выражения вычисляется и сравнивается по очереди со значениями всех константных_выраженийиз префиксов case. При обнаружении совпадения управление передается на оператор, следующий за сопоставленным префиксом. В противном случае, если указан префикс default, управление передается на оператор с этим префиксом; иначе ни один из операторов в конструкции switch не выполняется.

Префиксы case и default не оказывают влияния на поток управления; оно беспрепятственно продолжается через эти префиксы. Для выхода из конструкции выбора используется оператор break (см. следующий пункт).

Поскольку обычно оператор, входящий в switch, является составным, в начале этого оператора могут быть указаны описания; однако инициализации автоматических и регистровых переменных не действуют. Приведем несложный пример полного оператора switch:

switch (c) {

case 'r':

rflag = TRUE;

break;

case 'w':

wflag = TRUE;

break;

default:

(void) fprintf (stderr, "Неизвестная опция\n");

exit (2);

}

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