Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 3).doc
Скачиваний:
138
Добавлен:
15.04.2015
Размер:
1.34 Mб
Скачать

Арифметические операции

Увеличение a++ и ++a

a++ и ++a являются двумя формами операции увеличения на 1.

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

В случае префиксной формы - наоборот.

Уменьшение a-- и --a

Умножение a= b*c;

Целочисленное деление a= b/c;

Деление x= b/c;

В отличие от Паскаля операция "/" с целыми операндами производит целый результат. Чтобы заставить ее для целых операндов получать вещественный результат, надо сделать приведение типов так, чтобы хотя бы один операнд был вещественным.

Модуль (остаток) A:= B mod C; a= b%c;

Сложение a=b+c;

Вычитание a=b-c;

Унарный минус a= - b;

Унарный плюс a= + b;

Операции отношения

Больше чем a > b

Больше или равно a >= b

Меньше чем a < b

Меньше или равно a <= b

Равно a==b

Не равно a!=b

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

Логическое НЕ !flag;

Замечание: эта операция (унарная) ненулевой (истина) операнд преобразует в 0, а 0 (ложь) - в 1. Эту операцию часто используют для замены конструкции <выражение == 0> на <!выражение>.

Эти конструкции используюся в операторах if (...).

Логическое И flag1 && flag2 ->

Логическое ИЛИ flag1 || flag2 ->

Замечание: Логические операции в Си (&&,||) - эффективно вычисляемые (то, что на Паскале называлось вычислением по короткой схеме). Это значит, операции вычисляются слева направо до тех пор, пока не определится истинность или ложность результата. Так, в отличие от Паскаля, Си позволяет записать:

while (i <= limit && list[i] != 0) ... ;

где limit - максимальный допустимый индекс массива list. Если первое выражение (i <= limit) ложно, то Си знает, что все выраже ние ложно и не надо вычислять второе выражение (list(i)!=0), где может быть ошибка в диапазоне индекса массива.

Поразрядные операции

Поразрядное дополнение a=~b;

Поразрядное И a=b&c;

Поразрядное исключающее ИЛИ a=b^c;

Поразрядное ИЛИ a=b|c;

Сдвиг вправо a=b>>c;

Сдвиг влево a=b<<c;

Операцияsizeof

Данная операция имеет две формы:

  1. sizeof(тип)

  2. sizeof(выражение)

Результат операции – целочисленная величина типа или выражения в байтах.

Операция выбора по условию

Эта операция - единственная, имеющая 3 операнда (E1,E2,E3), каждый из которых является выражением. Операция условия соединяет их следующим образом:

E = E1 ? E2 : E3;

--- --- ----

| |_____|____возвращаемые значения

анализируемое

выражение

Зачем это нужно? Как известно, оператор if не возвращает значений. А значения записанного выше выражения равно

- E2, если значение Е1 - истина;

- Е3, если значение Е1 - ложь.

Е = Е1 ? Е2 : Е3

-^--^- ----- -----

| | Е1-истина | |

| +---------------+ |

| Е1-ложь |

+--------------------- -+

Операция запятая

Эта операция объединяет два и более выражения в одно выражение, результатом которого (если он нужен) будет значение самого правого выражения. Значения всех других (кроме правого) операндов вычисляются лишь для получения побочного эффекта.