Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепция решения информационных задач.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
583.68 Кб
Скачать

2.3. Выражения

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

В качестве операндов в С/С++ могут быть использованы константы, переменные и вызовы функций.

Язык С/С++ в значительной степени является языком выражений. Это следует из того факта, что некоторые операции, например присваивания, не реализуется с помощью специальных операторов, а трактуются как операции с двумя аргументами. Важной особенностью является возможность превращения произвольного выражения в оператор. Для этого достаточно закончить выражение точкой с запятой. Такой способ чаще всего используется в отношении операции присваивания, которая в записи, заканчивающейся точкой с запятой, образует оператор, известный из других языков программирования как оператор присваивания.

Структура оператора присваивания

ИП = А; ИП = L;

где ИП – идентификатор переменной;

= – символ операции присваивания

A(L) – арифметическое (логическое) выражение;

; – признак оператора.

Принципы вычисления значений выражений вытекают из семантики и приоритетов, содержащихся в них операций, а также из видов использованных аргументов (операндов). Если данный аргумент находится в границах более чем одной операции с одинаковыми приоритетами, то операции являются связанными. Большинство операций связывает аргументы слева направо. Исключение составляют только операции с одним аргументом и операции присваивания, а также трёхаргументная условная операция. Порядок применения операций к аргументам зависит от принятых в языке приоритетов и связей операций. Операции более высокого приоритета, выполняются в первую очередь. Если некоторый аргумент касается двух операций одинакового приоритета, то очерёдность выполнения операций определяется по связыванию. Для изменения порядка выполнения операций используют круглые скобки. Таким образом, выражение x = y = z означает x = (y = z), а выраженияе x + y + z означает (x + y) + z, согласно соответствующим правилам связывания.

Связывание и упорядочивание операций по очерёдности уменьшения приоритетов приведены в табл. 5.

Таблица 5

Оператор

Описание

Приоритет

Связывание

1

2

3

4

5

1

::

Разрешение видимости

16

=>

2

[ ]

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

16

=>

3

( )

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

16

=>

4

.

Выбор члена структуры или класса

16

=>

5

->

6

++

Постфиксный инкремент

15

<=

7

--

Постфиксный декремент

15

<=

8

++

Префиксный инкремент

14

<=

9

--

Префиксный декремент

14

<=

10

11

sizeof

sizeof()

Размер

14

<=

12

(тип)

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

14

13

~

Инверсия

14

<=

14

!

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

14

<=

15

-

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

14

<=

16

+

Унарный плюс

14

<=

17

&

Получение адреса

14

<=

18

*

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

14

<=

19

20

new

new[]

Создание динамического объекта

14

<=

21

22

delete

delete[]

Удаление динамического объекта

14

<=

23

casting

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

14

24

*

Умножение

13

=>

25

/

Деление

13

=>

26

%

Остаток от деления

13

=>

27

+

Сложение

12

=>

28

-

Вычитание

12

=>

29

>>

Сдвиг вправо

11

=>

30

<<

Сдвиг влево

11

=>

31

<

Меньше

10

=>

32

<=

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

=>

33

>

Больше

10

=>

34

>=

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

10

=>

35

==

Равно

9

=>

36

!=

Не равно

9

=>

37

&

Побитовое И

8

=>

38

^

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

7

=>

39

|

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

6

=>

40

&&

Логическое И

5

=>

41

||

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

4

=>

42

?:

Условие

3

<=

43

=

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

2

<=

44

*=

Умножение с присваиванием

2

<=

45

/=

Деление с присваиванием

2

<=

46

%=

Модуль с присваиванием

2

<=

47

+=

Сложение с присваиванием

2

<=

48

-=

Вычитание с присваиванием

2

<=

49

<<=

Сдвиг влево с присваиванием

2

<=

50

>>=

Сдвиг вправо с присваиванием

2

<=

51

&=

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

2

<=

52

^=

Исключающее ИЛИ с присваиванием

2

<=

53

|=

Побитовое ИЛИ с присваиванием

2

<=

54

throw

Генерация исключения

2

<=

55

,

Запятая

1

=>

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

Структуру использования простой операции мы рассмотрели выше.

Составная операция присваивания имеет вид

ИП ор= А;

где ИП – идентификатор переменной (целой или вещественной );

ор – символ операции (см. табл. 5);

А – арифметическое выражение;

; – признак оператора.

Составное присваивание выполняется как присваивание вида

ИП = ИП ор А;

Например, a*=b; эквивалентно a=a*b; или a-=b; эквивалентно a=a-b;