Приоритет и порядок проведения операций




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

В Таблице 5.1 показаны приоритеты и ассоциативность операторов языка С. Они приводятся в списке в порядке убывания их приоритета. Если на одной строке указано несколько операторов, то они имеют равный приоритет и вычисляются по правилам их ассоциативности.

Таблица 5.1. Приоритет и ассоциативность операторов языка С Символ Тип операции Ассоциативность () []. -> выражения слева направо - ~! * & унарные справа налево ++ -- sizeof тип унарные справа налево * / % мультипликативные слева направо + - аддитивные слева направо << >> сдвиг слева направо < > <= >= отношения (неравенство) слева направо ==!= отношения (равенство) слева направо & битовое-И слева направо ^ битовое включающее-ИЛИ слева направо | битовое исключающее-ИЛИ слева направо && логическое-И слева направо || логическое-ИЛИ слева направо?: условие справа налево = *= /= %= простые и составные присвоения справа налево += -= <<= >>= простые и составные присвоения справа налево &= |= ^= простые и составные присвоения справа налево, последовательные вычисления слева направо

Операторы приведены в списке по убыванию их приоритета. Если на одной строке расположено несколько операторов, то они имеют равный приоритет.

Используйте скобки!

Операторы

Введение

Операторы программы на языке С управляют процессом ее выполнения.

Составные операторы ограничиваются фигурными скобками ({}). Все другие операторы языка С заканчиваются точкой с запятой (;).

Любой оператор языка С может начинаться с идентифицирующей его метки, которая состоит из имени и двоеточия. Метки операторов распознаются только оператором goto.

При выполнении программы на языке С ее операторы выполняются в том порядке, в котором они появляются в программе, если нет оператора, который бы явно передавал управление в другое место программы.

Оператор break

Синтаксис: break;

Оператор break прекращает выполнение вложенного оператора do, for, switch или while, в котором он появляется. Управление передается тому оператору, который непосредственно следует за прерванным оператором. Оператор break может появиться только в операторах do, for, switch или while.

Для вложенных операторов оператор break прекращает выполнение только оператора do, for, switch или while, в котором он появился. Для передачи управления из вложенной структуры можно использовать оператор return или goto.

Составной оператор

Синтаксис: { [объявление]... оператор [оператор]... }

Составной оператор обычно появляется как тело другого оператора, например, оператора if. При выполнении составного оператора его операторы выполняются в том порядке, в котором они появляются, если не встретится оператор, который явно передает управление в другое место программы.

Оператор continue

Синтаксис: continue;

Оператор continue передает управление на следующую итерацию оператора do, for или while, в котором он появляется передавая все оставшиеся операторы тела оператора do, for или while. Следующая итерация оператора do, for или while понимается следующим образом:

  • В операторе do или while следующая итерация начинается вычислением выражения оператора do или while.
  • В операторе for следующая итерация начинается вычислением выражения цикла оператора for. После вычисления условного выражения в зависимости от его результатов происходит либо прекращение выполнения оператора либо выполнение его тела.

Оператор do

Синтаксис: do оператор while (выражение);

Тело оператора do выполняется один или несколько раз до тех пор, пока значением выражения не станет "ложь" (0). Выполнение происходит следующим образом:

  1. Выполняется тело оператора.
  2. Вычисляется выражение. Если его значение "ложь", то выполнение оператора do заканчивается и управление передается следующему оператору программы. Если его значение "истина" (ненулевое значение), то процесс повторяется, начиная с шага 1.

Выполнение оператора do может быть прервано выполнением оператора break, goto или return в теле оператора do.

Оператор-выражение

Синтаксис: выражение;

При выполнении оператора-выражения, выражение вычисляется в соответствии с правилами, приведенными в Главе "Выражения и присвоения".

В языке С присвоения являются выражениями. Значением выражения в этом случае будет присваиваемое значение (иногда называемое "правым значением").

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

Оператор for

Синтаксис: for([начальное-выражение]; [условное-выражение]; [выражение-цикла]) оператор

Тело оператора for может выполниться несколько раз, а может не выполниться ни разу, пока значением необязательного условного-выражения не станет "ложь". Можно использовать необязательные начальное-выражение и выражение-цикла для инициализации и смены значений при выполнении операторов for.

Выполнение оператора for происходит следующим образом:

  1. Вычисляется начальное-выражение, если оно есть.
  2. Вычисляется условное-выражение, если оно есть. Возможны три результата:
    • Если значение условного-выражения "истина" (ненулевое), то выполняется оператор. Затем вычисляется выражение-цикла, если оно есть. Процесс начинается снова с вычисления условного-выражения.
    • Если условное-выражение опущено, то считается, что его значение "истина" и процесс выполнения протекает так, как это описано в первом случае. Оператор for без аргумента условного-выражения прекращает свое выполнение только в случае выполнения оператора break или return в теле оператора, или при выполнении оператора goto (который передаст управление на оператор с меткой вне тела оператора for).
    • Если значение условного-выражения "ложь", то выполнение оператора for прекращается и управление передается к следующему оператору программы.

Оператор for также прекращает свое выполнение при выполнении в теле оператора оператора break, goto или return.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: