Читать «Полный справочник по С++» онлайн - страница 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++ создают для операторов инкрементации и декрементации очень быстрый и эффективный объектный код. Он выполняется намного быстрее, чем код, соответствующий оператору присваивания. По этой причине операторы инкрементации и декрементации следует применять всегда, когда это возможно. Ниже приведены приоритеты арифметических операторов.
высший ++ —
- (унарный минус)
* / %
НИЗШИЙ + -