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

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

Таблица 1

Операции, применяемые к целым операндам

Смысл операции определяется числом операндов; унарное & – операция взятия адреса, а бинарное & – операция логического И.

Смысл операции определяется также типом ее операндов: + в выражении a + b означает сложение с плавающей точкой, если тип операндов float, но целое сложение, если их тип int.

В C++ существует операция присваивания =, а не оператор при-сваивания, как в некоторых языках. То есть присваивание может употребляться в неожиданном контексте; например, x = sqrt(a = 3*x).

Выражение a = b = c значит присвоение c объекту b, а потом объекту a. Другое свойство операции присваивания – она способна совмещаться с большинством бинарных операций. К примеру, x[i + 3]* = 4 имеет значение x[i + 3] = x[i + 3]*4, за исключением того, что выражение x[i + 3] определяется только один раз. Это дает большую степень эффективности без необходимости употребления оптимизирующего компилятора. К тому же это менее длинно.

Во многих программах на C++ широко используются указатели.

Унарная операция * разыменовывает указатель, т. е. *p представляет собой объект, на который указывает p. Данная операция также именуется косвенной адресацией. Например, если имеется char* p, то *p – это символ, на который указывает p. Часто при работе с указателями применяются операция увеличения ++ и операция уменьшения —.