- •Алфавит языка Идентификаторы Ключевые слова
- •Типы данных
- •Переменные, константы
- •Переменные
- •Типы переменных
- •Объявление переменных
- •Инициализация переменных
- •Константы
- •Неименованные константы
- •Именованные константы
- •Выражения и операции
- •Арифметические операции
- •Операция присваивания
- •Операции сравнения (отношения)
- •Логические операции
- •Побитовые (поразрядные) операции
- •Операции инкремента и декремента
- •Условная операция (?)
- •Операция запятая
- •Операция sizeof
- •Приоритеты операций
- •Приведение (преобразование) типа
Побитовые (поразрядные) операции
Побитовые операции используются в тех случаях, когда необходимо получить доступ к отдельным битам памяти, где хранятся данные, например, при выводе графических изображений на экран.
Побитовые операции могут выполнять действия только над целочисленными значениями. Их нельзя применять к данным типа 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 является имя типа или выражение. Операнд заключается в скобки (если операнд – выражение, скобки не обязательны). Результат операции – целое число, равное количеству байтов, необходимых для хранения в памяти заданной величины.