Читать «Полный справочник по С++» онлайн - страница 29

Герберт Шилдт

Множественные присваивания

В языке C/C++ разрешается присваивать одно и то же значение нескольким переменным одновременно. Например, во фрагменте программы, приведенном ниже, переменным х, у и z одновременно присваивается число 0.

| х = у = z = О;

Такой способ присваивания часто применяется в профессиональных программах.

Арифметические операторы

В табл. 2.4 приведен список арифметических операторов языка C/C++. Операторы +, -, * и / выполняются точно так же, как и в большинстве других языков программирования. Их можно применять практически к любым встроенным типам данных. Если оператор / применяется к целому числу или символу, дробная часть отбрасывается. Например, 5/2 равно 2.

Таблица 2.4. Арифметические операторы
ОператорДействие
-Вычитание, а также унарный минус
+Сложение
*Умножение
/Деление
%Деление по модулю
Декрементация
++Инкрементация

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

int х, у;

х = 5;

У = 2;

printf("%d ", х/у); /* Выведет число 2 */ printf("%d ", х%у); /* Выведет число 1, остаток

целочисленного деления */

х = 1;

У = 2;

printf("%d %d", х/у, х%у); /* Выведет числа 0 1*/

Последний оператор программы выводит на экран число 0 и 1, поскольку результат целочисленного деления 1/2 равен 0, а остаток — 1.

Унарный минус умножает свой операнд на —1. Иными словами, унарный минус меняет знак операнда на противоположный.

Инкрементация и декрементация

В языке C/C++ есть два полезных оператора, которыми не обладают некоторые другие языки. Это операторы инкрементации и декрементации ++ и —. Оператор ++ добавляет 1 к своему операнду, а оператор — вычитает ее. Таким образом, оператор

| х = х+1;

эквивалентен оператору

I ++х;,

а оператор | х = х-1 ,-

эквивалентен оператору I х—;

Операторы инкрементации и декрементации имеют две формы: префиксную и постфиксную. Например, фрагмент

| х = х+1; можно переписать так

| ++x;

или так | х++,-

Однако между префиксной и постфиксной формами существует важное отличие, когда они используются внутри выражений. Если используется префиксная форма, операторы инкрементации и декрементации применяются к старому значению операнда, I; если постфиксная — к новому. Например, в результате выполнения операторов

|х=10; у = ++х;

переменной у будет присвоено значение 11. Однако, если переписать этот фрагмент иначе:

■ х = 10;

I у = х++;,

переменная у будет равна 10. В обоих случаях переменная х в результате станет равной 11. Разница заключается в том, когда это происходит.

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

высший ++ —

- (унарный минус)

* / %

НИЗШИЙ + -