Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирование.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.73 Mб
Скачать

2.5.3Некоторые другие операции в языке Си.

Операции в языке Си составляют его фундамент. Их более 40 и они могут применяться не только к одному или двум, но и к 3 операндам. Рассмотрим еще некоторые: сначала основные, а затем специфические, позволяющие более коротко записывать выражения.

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

Операция присваивания имеет вид (синтаксис):

переменная = выражение

Семантика: сначала вычисляется выражение, затем результат заносится в переменную, при этом тип результата преобразуется к типу переменной (конечно, если это возможно, например, тип float нельзя перевести в int, если число > 32767). Результатом операции и его типом являются значение и тип переменной.

Если в выражении несколько операций "=", то они выполняются справа налево. Приоритет этой операции ниже приоритета всех остальных операций, кроме операции "запятая", которая рассмотрена ниже.

Пример 1:

float a=2.5,b; int c; char d;

Результатом выражения

Выражение

Значение b

Значение с

Значение d

Знач-е выр-я

c=a+1

3

3

b=c=a+1

3.0

3

3.0

c=b=a+1

3.5

3

3

d=c='A'+4

69

'E'

'E'

(c=a+1)+2>5

3

0

В последнем примере необходимость скобок связана с тем, что приоритет у операции "+" выше, чем у "=".

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

Условная операция имеет 3 операнда (т.е. является тернарной) и выглядит так (синтаксис)

условие ? выражение1 : выражение2

Семантика: если условие истинно, то результатом операции является значение выражения1, если ложно, то значение выражения2.

Пример 2.

Значением выражения x>y ? x : y будет большее из x и y. Значением выражения x<0 ? -x : x является модуль x.

2.5.3.3Операция последовательного вычисления (запятая).

Операция последовательного вычисления имеет вид (синтаксис):

Выражение1,выражение2

Семантика: при выполнении этой операции сначала вычисляется выражение1, затем выражение2. Результатом операции является значение выражения2.

Приоритет у этой операции самый низкий из всех. Используется там, где по синтаксису допускается только одно выражение. Например, значением выражения x>y ? (y=0, x) : (x=0,y) будет большее из x и y, а меньшее обнулится .

2.5.3.4Специфические формы операции присваивания.

Для записи операций присваивания вида

переменная = переменная арифм.операция выражение,

например, m=m+2*(b-1), в языке Си предусмотрены специальные формы их записи, которые легче пишутся и быстрее выполняются:

переменная арифм.операция = выражение,

Например, вместо вышеуказанного выражения можно записать m+=2*(b-1), вместо m=m/2 можно записать m/=2 и т.п. Приоритет у этих операций такой же, как у обычного присваивания.

При необходимости увеличения (уменьшения) значения переменной на 1 предусмотрена еще одна удобная форма операции присваивания, называемая декрементом (инкрементом) и имеющая вид ++ (--), например, i++ означает i=i+1, а i-- означает i=i-1.

Такой вид записи обычно используется внутри выражений. При этом символы ++ (--) можно ставить как перед именем переменной (++n, префиксная форма операции), так и после него (n--, постфиксная форма). Отличие в этих формах состоит в том, что изменение переменной происходит в первом случае до использования ее значения в выражении, а во втором случае - после.

Пример 3. Пусть k=4. Операции m=k++ занесут сначала число 4 (т.е. значение k) в m , а затем увеличат k на 1. Наоборот, операции m=++k сначала увеличат k на 1, а затем результат (число 5) занесут в m.