Направления программирования. История создания языка Си. Особенности языка, страница 9

4) Операции сравнения: < , > , <= , >= , == , !=  - результат типа int.

5) Поразрядные операции : & , | , ^

6) Операция последовательного вычисления :  , - предписывает последовательное вычисление выражений.

-  Операции сдвига:

<< , >> - сдвигает последовательность битов первого операнда влево или вправо на количество бит, равное второму операнду.

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

Пример:

11(10)=00001011(2)

11<<2à00101100=44

11>>2à00000010=2

Эти операции можно использовать для быстрого деления или умножения на 2встепени n.

<операнд>>>nà<операнд>  / 2n

<операнд>>>nà<операнд> * 2n

Особенности вычисления логических выражений.

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

((b!=0)&&(a/b>x))                   Если значение выражения1=0, то значение выражения2 не вычисляется, т.к. значение выражения2 на результат не влияет.

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

((a>b) || (a>d))                          Если выражение1=0, то второе не вычисляется.

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

Побитовые операции.

Побитовое “и” - &

Побитовое “или” -|

Исключенное “или” - ^ (эквиваленция)

Пример:

12 = 00001100                            12&10 = 00001000=8

10 = 00001010                            12 | 10 = 00001110=14

12 ^10 = 00000110=6

Последовательность вычисления выражений.

<выражение1>,<выражение2>

Вычисляется значение выражения1, затем значение выражения2 и результат всей операции равен значению 2-ого выражения. Используется в тех случаях, когда по синтаксису языка требуется одно выражение, а по логике программы требуется вычислить несколько.

п.6.3.Тернарная операция.(условная операция)

<операнд1>?<операнд2>:<операнд3>

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

Примеры использования условной операции.

1)  #include<stdio.h>

main()

{ int i=6, j=4;

int result=(i<j)?i:j;

printf("%d\n", result);}

2)  #include<stdio.h>

main()

{ int i=6, j=4;

(i<j)?printf("i<j\n"):printf("i>=j\n");}

3)  #include<stdio.h>

main()

{ int i=3, j=5;

printf("Минимум из %d и %d – это%d\y", i,j,(i<j)?i:j;}

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

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

1)  ++ - инкремент (увеличение на 1)           могут записываться как перед операндом

- -  - декримент(уменьшение на 1)           (префиксная), так и после (постфиксная)

Для префиксной формы сначала увеличиваем или уменьшаем на 1 значение, а затем это измененное значение участвует в вычислении. Для постфиксной формы – рперанд сначала участвует в вычислении выражения, а потом изменяется на 1.

Пример:

if(++x>0)

if(x++>0)

2)   "=" – простое присваивание.

<операнд1>=<операнд2>

Операция присваивания вырабатывает результат, который может быть использован в дальнейшем вычислении выражения. В отличии от других языков  в Си операция присваивания может использоваться в выражениях: if((f=x-y)>0) printf("число х больше у")

3)  Составное присваивание:

+=     *=     <<=    &=    -=    /=    >>=    |=    ^=