Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ_ОАиП / Лекции ГГУ Скорины - Программирование.doc
Скачиваний:
179
Добавлен:
21.03.2016
Размер:
2.27 Mб
Скачать

9. Выражения и операции

Выражение – это последовательность операндов и операций. Значения, участвующие в операциях, называются операндами. Операнды – это переменные, константы либо другие выражения. Выражение может состоять из одной или более операций. Когда выражение содержит более чем одну операцию, порядок их выполнения определяется соотношением приоритетов – операция с более высоким приоритетом выполняется раньше. Операции с одинаковым приоритетом обрабатываются в соответствии с их ассоциативностью (порядком выполнения). Ассоциативность бывает двух видов: слева направо и справа налево:

a=b+c*d => умножение имеет более высокий приоритет, чем сложение, у присваивания самый низкий приоритет => a=(b+(c*d))

a=b+c–d => присваивание последнее, сначала сложение, потом – вычитание, т.е. у них приоритет одинаковый, а ассоциативность (порядок выполнения) – слева направо => a=((b+c)–d)

Каждая операция возвращает какое-то значение. Например, операция 5+2 вернёт семь.

Операция

Описание

Пример

Приоритет/ Ассоциативность

Первичные и постфиксные

[]

индекс массива

mas[5]

16, слева направо

()

вызов функции

puts(msg)

16, слева направо

.

элемент структуры

time.hour

16, слева направо

->

элемент структуры

time->hour

16, слева направо

++

постфиксное приращение

num++

15, слева направо

--

постфиксное уменьшение

num--

15, слева направо

Унарные операции

++

префиксное приращение

++num

14, справа налево

--

префиксное уменьшение

--num

14, справа налево

sizeof

размер в байтах

sizeof(num)

14, справа налево

(тип)

преобразование типа

(float)i

14, справа налево

~

побитовое НЕ

~visible

14, справа налево

!

логическое НЕ

!EOF

14, справа налево

-

унарный минус

-i

14, справа налево

&

адрес

&num

14, справа налево

*

разыменование

*ptrNum

14, справа налево

Бинарные и тернарные операции

Мультипликативные

*

умножение

a*10

13, слева направо

/

деление

a/10

13, слева направо

%

взятие по модулю

a%10

13, слева направо

Аддитивные

+

сложение

a+10

12,слева направо

-

вычитание

a-10

12,слева направо

Побитовый сдвиг

<<

сдвиг влево

a<<1

11, слева направо

>>

сдвиг вправо

a>>1

11,слева направо

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

<

меньше

i<n

10,слева направо

<=

меньше или равно

i<=10

10,слева направо

>

больше

i>0

10,слева направо

>=

больше или равно

i>=0

10,слева направо

Равенство

==

равно

9,слева направо

!=

не равно

9,слева направо

Битовые

&

побитовое И

a&b

8,слева направо

^

побитовое исключающее ИЛИ

a^b

7, слева направо

|

побитовое ИЛИ

a|b

6,слева направо

Логические

&&

логическое И

a>0 && b>0

5, слева направо

||

логическое ИЛИ

a!=0 ||b==0

4, слева направо

Условия

?:

при условии

a>b ? 1: 0

3, справа налево

Присваивание

=

присваивание

x=10

2, справа налево

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

присваивание произведения, частного, остатка и т.д.

x+=10

x%=10

2, справа налево

,

запятая

x=2, y=3;

1, слева направо

По числу участвующих операндов, операции делятся на три группы: унарные (у операции один операнд), бинарные (в операции участвуют два операнда), тернарные (в операции участвуют три операнда). В языке C всего одна операция, которая принимает три операнда – условная операция.

По типу выполняемой операции различают: арифметические, поразрядные логические, присваивания, операции отношения и др.

Рассмотрим основные и специфические операции языка С более подробно.