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

Побитовые (поразрядные) операции

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

Побитовые операции могут выполнять действия только над целочисленными значениями. Их нельзя применять к данным типа float и double. В отличие от логических операций с их помощью сравниваются не два числа целиком, а отдельные их биты, причём каждый бит рассматривается независимо от других битов. К таким операциям в языке С++ относятся следующие операции:

& – поразрядное И;

| – поразрядное ИЛИ;

~ – поразрядное НЕ (инверсия);

^ – поразрядное "исключающее ИЛИ";

<< сдвиг влево;

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

Таблица свойств побитовых операций

x

y

~y

x & y

x | y

x ^ y

0

0

1

0

0

0

0

1

0

0

1

1

1

0

0

1

1

1

1

1

1

0

Рассмотрим примеры выполнения побитовых операций:

10101 10101 10101

& | ^

11001 11001 11001

-------- --------- --------

10001 11101 01100

Операции инкремента и декремента

В языке С++ предусмотрены операция (++) и операция (--) соответственно для увеличения и уменьшения на единицу значения операнда (унарные операции инкремента и декремента). Их можно указывать перед операндом (префиксная форма записи) и после операнда (постфиксная форма записи). В первом случае (++x, --x) значение операнда x изменяется перед его использованием в выражении, а во втором (x++, x--) – после его использования. Например, запись sum = x + y++ означает "сложить x и y и увеличить y на единицу" а запись

sum = x + ++y – "увеличить y на единицу, сложить x и y и присвоить результат sum". Так, если x = 1, а y = 2, то в первом случае sum = 3, а во втором – sum = 4.

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

Язык C++ имеет очень мощную условную операцию (операцию условия), которая обозначается символом вопроса (?). Условная операция является трёхоперандной (тернарной) и имеет следующий вид:

операнд_1 ? операнд_2 : операнд_3

где операнд_1, операнд_2 и операнд_3 – это выражения.

Результатом выполнения операции (?) является значение операнда_2 или операнда_3 в зависимости от истинности операнда_1. Если значением операнда_1 является true, результатом операции является значение операнда_2, если falseоперанда_3.Например, результатом выполнения условной операции

(a >0) ? x : 0

будет значение x, если a > 0 и нулевое значение – в противном случае.

Операция запятая

В С++ определена специальная операция запятая (,), задающая последовательность вычисления выражений, например:

(i = 1, j = 2, k =3).

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

a = (x = 5, y = 6, z = 3) равен 3.

Операция sizeof

Операция sizeof позволяет определить, сколько памяти занимает то или иное значение. Например, sizeof(int) определяет число байтов, отводимое под переменные типа int, а sizeof(b) – число байтов, занимаемое переменной b.

Операндом унарной операции sizeof является имя типа или выражение. Операнд заключается в скобки (если операнд – выражение, скобки не обязательны). Результат операции – целое число, равное количеству байтов, необходимых для хранения в памяти заданной величины.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]