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

Знаки операций и разделители

4. Знаки операций.

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

В языке С++ определено примерно 50 знаков операций:

+ - * / ~ ! ++ -- % << >> < > >= <= = = != & | ^ && || += и т.д.

Один и тот же знак может обозначать разные операции в зависимости от контекста. Например: бинарная операция & -это конъюнкция ( a&b), а унарная операция & - это операция вычисления адреса ( &x ) , cout << - вывод, a << b - сдвиг влево.

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

- унарный минус: -100 -а

+ унарный плюс: +в

~ побитовое отрицание : ~0 = 1 ~1 = 0 ~5 = 2

! логическое отрицание ( если целочисленный операнд равен 0, то результат равен 1,

если не равен 0, то результат 0).

!0 = 1 !2 = 0 !(-10) = 0

++ увеличение на 1 (инкремент). Операндом может быть только переменная.

++i 1) i=i+1 2) использовать i

i++ 1) использовать i 2) i=i+1

-- уменьшение на 1 (декремент)

--i 1) i=i-1 2) использовать i

i-- 1) использовать i 2) i=i-1

sizeof выражение вычисление размера объекта в байтах

sizeof(тип)

Например:

sizeof(char) = 1 int i; sizeof i = 2;

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

1.аддитивные операции

+ сложение арифметических операндов

- вычитание

2. мультипликативные операции

* - умножение

/ - деление. При целочисленных операндах абсолютное значение

результата округляется до целого.

20/3=6 -20/3=-6

% - получение остатка от целочисленного деления

13%4=1 (-13%4)= -1

13%(-4) = +1

(-13)%(-4)= -1

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

Формат выражения с операцией сдвига

<операнд><операция сдвига><операнд>

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

значению правого целочисленного операнда.

>> сдвиг вправо

4 << 2 = 16 5 >> 1 = 2

4. Поразрядные операции

& - конъюнкция значений целочисленных операндов

| - дизъюнкция

^ - исключающая ИЛИ

6 | 5 = 7 110 6 ^ 5 = 3 110

| 101 ^ 101

111 011

5. Операции отношения (сравнения)

<, >, <=, >=, = = (равно), != (не равно)

6. Логические бинарные операции.

&& - конъюнкция арифметических операндов или отношений.

Результат 0 (ложь) или 1 (истина)

|| - дизъюнкция арифметических операндов или отношений.

3 < 5 = 1 3 > 5 = 0 3 = = 5 = 0

(3 + 4 > 5 && 3+5 > 4 && 4 + 5 > 3) = 1

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

= присвоить значение выражения из правой части операнду левой части.

p= 5 – 2* х;

*= присвоить операнду левой части произведение значений обоих операндов

p*=2 ~ р = р*2

/= присвоить операнду левой части частное от деления левого операнда

на значение правого.

p/= 2.2 – α ~ p = p/(2.2 – α)

%= присвоить операнду левой части остаток от целочисленного деления

Левого операнда на правый.

N%=3 ~ N = N % 3

+ = присвоить операнду левой части сумму значений обоих операндов

А += В ~ А = А + В

- = присвоить операнду левой части разность значений обоих операндов

Х - = 4.3 – Z ~ X = X – (4.3 – Z)

<<= a <<=4 ~ a = a << 4

>>= a >>=4 ~ a = a >> 4

&= присвоить целочисленному операнду левой части значение, полученное

поразрядной конъюнкцией его битового представления с битовым

представлением целочисленного операнда правой части.

e&= 44 ~ e = e & 44

! = - дизъюнкция

^ = - исключающая ИЛИ

8. Круглые () скобки играют роль бинарных операций при вызове функций.

<имя функции> (< список параметров >)

Квадратные скобки [ ] играют роль бинарных операций при индексировании

элементов массива.

<имя массива>[<индекс>] - это переменная с индексом

В языке С++ принято, что индексы начинаются с нуля, т.е. массив int Z[3]

состоит из элементов z[0], z[1], z[2].

Пример:

Вывести на экран символьный массив ABCDEF в столбик.

#include <iostream.h>

void main()

{ char MASSIV[]=”ABCDEF”;

int i = 0; // i – номер элемента массива

while ( MASSIV[i] != ‘\0’)

cout << ‘\n’ << MASSIV[i++];

}

Результат:

A

B

C

D

E

F

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

<выражение1> ? <выражение2> : <выражение3>

Алгоритм: вычисляется значение выражения1 . Если оно истинно, т.е. ≠ 0, то результатом является значение выражения2, в противном случае выражения3.

Например:

X<0 ? –X : X

10. Каноническая операция явного преобразования типа ( как в С) :

(<имя типа>) <операнд>

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

Например:

(long) 10 - внутренне представление имеет длину 4 байта.

(char) 10 - внутренне представление имеет длину 1 байт.

(float) 10 – внутреннее представление имеет длину 4 байта (формат

вещественного числа)

Еще пример:

#include<iostream.h>

void main()

{ int INTEGER = 50;

float FLOATING = 15.85;

INTEGER = (int) FLOATING; // явное преобразование

cout << “New integer : “;

cout << INTEGER << “\n”;

}

Результат:

New integer: 15

Результат будет таким же в данном примере, если использовать неявное преобразование:

INTEGER=FLOATING; // неявное преобразование

Кроме рассмотренной канонической операции явного преобразования типов в языке С++ существует функциональная форма преобразования типов:

<имя типа>(<операнд>)

В этом случае тип имеет простое, несоставное наименование.

Например:

long (2) - длина 4 байта

double (2) - длина 8 байтов

unsigned long(2) - ошибка !

Грамматика языка С++ определяет 16 рангов операций. Операции ранга 1 имеют наивысший приоритет. Если в выражении используются несколько операций одного ранга, то они выполняются либо слева–направо (->), либо справа-налево (<-).

Ранг

Операции

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

1.

( ) [ ] (вызов функции, индекс массива)

→

2.

! ~ + - ++ -- sizeof тип() (унарные)

←

3.

Операции с классами

4.

* / % ( бинарные)

→

5.

+ - (бинарные)

→

6.

<< >>

→

7.

< <= >= > ( отношения )

→

8.

= = != ( отношения )

→

9.

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

→

10.

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

→

11.

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

→

12.

&& ( логическая конъюнкция )

→

13.

| | ( логическая дизъюнкция )

→

14.

? : ( условная операция )

←

15.

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

←

16.

, ( операция “запятая” )

→

Язык С++ предоставляет программисту возможность самостоятельно задавать порядок выполнения вычислений с помощью скобок. Не существует ограничения на вложенность скобок.