Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CCPP / C / Презентации / Язык программирования C-03.pdf
Скачиваний:
64
Добавлен:
23.03.2016
Размер:
357.96 Кб
Скачать

Модуль 3. Операции

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

Операнды должны иметь целый тип и рассматриваются как цепочки битов.

~

 

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

~a

 

 

 

 

 

 

 

a

b

 

^

&

 

побитовая конъюнкция

a & b

 

 

|

 

побитовая дизъюнкция

a | b

 

 

 

 

 

 

 

0

0

 

0

^

 

побитовое XOR

a ^ b

 

 

 

 

 

 

 

 

 

 

0

1

 

1

<<

сдвиг влево

a << k,

(k>=0)

 

 

 

 

 

1

0

 

1

>>

сдвиг вправо

a >> k,

(k>=0)

 

Комбинации с присваиванием

a &= b и т.п.

1

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

Приоритет

Лексемы

Тип операции

 

Ассоциативность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

~

Унарные

 

Справа налево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

<< >>

Битовый сдвиг

 

Слева направо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

&

Побитовое «И»

 

Слева направо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

^

Побитовое исключающее «ИЛИ»

Слева направо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

|

Побитовое «ИЛИ»

 

Слева направо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

<<= >>= &= ^= |=

Простое и комбинированное

Справа налево

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

Модуль 3. Операции

Операции доступа и адресные операции

Операции доступа

array [ index ]

– доступ к элементу массива

function (

arg_list )

– доступ к значению функции

struct_var

. field_name

- доступ к полю структуры

Адресные операции

& var – вычисление адреса объекта

* pointer – разадресация указателя (доступ по указателю, доступ по адресу)

pointer_to_struct_var->field_name – доступ к полю структуры по адресу

 

 

 

 

 

 

 

Приоритет

 

Лексемы

Тип операции

Ассоциативность

 

 

 

 

 

 

 

 

 

 

 

 

1

 

[ ] ( ) . –>

Доступ

Слева направо

 

 

 

 

 

 

 

 

 

 

 

2

 

& *

Унарные

Справа налево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

Модуль 3. Операции

Прочие операции

Размер объекта

sizeof(type)

- размер типа в байтах

sizeof expression

- размер типа результата выражения в байтах

Последовательное вычисление

expression1 , expression2 - операция “запятая”

 

 

 

 

Приоритет

Лексемы

Тип операции

Ассоциативность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

sizeof

Унарные

Справа налево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

,

Последовательное вычисление

Слева направо

 

 

 

 

 

 

 

 

11

Модуль 3. Операции

Приоритеты и ассоциативность операций

Приоритет Лексемы

1[ ] ( ) . –>

постфиксные ++ и ––

2префиксные ++ и ––

 

sizeof & * + – ~

!

 

(тип)

 

 

 

3

 

 

 

 

 

 

 

 

4

* / %

 

 

 

 

 

+

 

5

 

 

 

 

 

 

 

 

<< >>

 

6

 

 

 

 

 

 

 

 

7

< > <= >=

 

 

 

!=

 

 

 

 

 

==

 

8

 

 

 

 

 

 

 

 

 

9

&

 

 

 

 

 

 

 

 

 

 

10

^

 

 

 

 

 

 

 

 

 

 

 

|

 

 

11

 

 

 

 

 

 

 

 

 

 

12

&&

 

 

 

 

 

 

 

 

 

 

13

||

 

 

 

 

:

 

 

 

 

 

?

 

14

 

 

 

–=

 

 

15

= *= /= %= +=

 

<<= >>= &= ^= |=

 

 

 

 

 

 

 

 

16

,

 

 

 

 

 

 

 

 

 

 

Тип операции

Ассоциативность

 

 

 

 

Доступ

Слева направо

 

 

 

 

Унарные

Справа налево

 

 

 

 

Приведение типа

Справа налево

 

 

 

 

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

Слева направо

 

 

 

 

Аддитивные

Слева направо

 

 

 

 

Битовый сдвиг

Слева направо

 

 

 

 

Отношения

Слева направо

 

 

 

 

Равенство

Слева направо

 

 

 

 

Побитовое «И»

Слева направо

 

 

 

 

Побитовое исключающее «ИЛИ»

Слева направо

 

 

 

 

Побитовое «ИЛИ»

Слева направо

 

 

 

 

Логическое «И»

Слева направо

 

 

 

 

Логическое «ИЛИ»

Слева направо

 

 

 

 

Условное выражение

Справа налево

 

 

 

 

Простое и комбинированное

Справа налево

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

 

 

 

 

 

Последовательное вычисление

Слева направо

 

 

12