- •А. В. Кибардин
- •Часть 1 Основы структурного и модульного программирования
- •Оглавление
- •Введение
- •1. Структурное программирование
- •Состав языка
- •Константы
- •Комментарии
- •Типы данных
- •Основные типы данных
- •Структура программы
- •Переменные и выражения Переменные
- •Операции
- •Примеры операций
- •Выражения
- •Функции ввода-вывода Основные функции ввода-вывода в стиле с
- •Спецификации формата
- •Модификаторы формата
- •Операторы Оператор «выражение»
- •Условный операторif
- •Оператор switch
- •Цикл с предусловием
- •Цикл с постусловием
- •Цикл с параметромfor
- •Операторы передачи управления Оператор безусловного перехода
- •Оператор break
- •Оператор continue
- •Оператор return
- •Указатели и ссылки
- •Инициализация указателей
- •Операции с указателями
- •Массивы Одномерные массивы
- •Динамические массивы
- •Многомерные массивы
- •Задание Написать программу, вычисляющую среднее арифметическое для каждого столбца и каждой строки двумерного числового массива a[4, 5]. Строки
- •Типы данных, определенные пользователем
- •Переименование типов
- •Перечисления
- •Структуры
- •2. Модульное программирование
- •Функции Объявление и определение функций
- •Глобальные переменные
- •Возвращаемое значение
- •Параметры функции
- •Передача массивов в качестве параметров
- •Передача имен функций в качестве параметров
- •Параметры со значениями по умолчанию
- •Перегрузка функций
- •Правила описания перегруженных функций
- •Шаблоны функций
- •Функции стандартной библиотеки
- •Функции ввода/вывода
- •Открытие потока
- •Ввод/вывод
- •Закрытие потока
- •Обработка ошибок
- •Функции работы со строками и символами
- •Математические функции
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •Области действия и пространства имен
- •Внешние объявления
- •Поименованные области
- •Библиографический список
- •Часть 1 основы структурного и модульного программирования
- •620034, Екатеринбург, ул. Колмогорова, 66
Операции
В соответствии с количеством операндов, которые используются в операциях, они делятся на унарные, бинарные и тернарную операции.
В следующей таблице приводятся основные операции в порядке убывания приоритетов (операции с разными приоритетами разделены чертой).
Таблица 3
Основные операции С++
Операция |
Описание |
1 |
2 |
Унарные операции | |
++ |
увеличение на 1 |
-- |
уменьшение на 1 |
sizeof |
размер данного в байтах |
~ |
поразрядное отрицание |
! |
логическое отрицание |
- |
унарный минус |
+ |
унарный плюс |
& |
взятие адреса |
* |
разадресация |
new |
выделение памяти |
delete |
освобождение памяти |
(type) |
преобразование типов |
Бинарные операции и тернарная операция | |
* |
умножение |
/ |
деление |
% |
остаток от деления |
+ |
сложение |
- |
вычитание |
<< |
сдвиг влево |
>> |
сдвиг вправо |
< |
меньше |
<= |
меньше или равно |
> |
больше |
>= |
больше или равно |
== |
равно |
& |
поразрядная конъюнкция (и) |
^ |
поразрядное исключающее или |
| |
поразрядная дизъюнкция (или) |
&& |
логическое и |
|| |
логическое или |
?: |
условная операция (тернарная) |
= |
Присваивание |
*= |
умножение с присваиванием |
Окончание табл. 3
1 |
2 |
/= |
деление с присваиванием |
%= |
остаток от деления с присваиванием |
+= |
сложение с присваиванием |
-= |
вычитание с присваиванием |
<<= |
сдвиг влево с присваиванием |
>>= |
сдвиг вправо с присваиванием |
&= |
поразрядное и с присваиванием |
|= |
поразрядное или с присваиванием |
^= |
поразрядное исключающее или с присваиванием |
, |
последовательное выполнение |
Примеры операций
Операции увеличения и уменьшения на единицу (++ и --) имеют две формы записи: префиксную (операция записывается перед операндом) и постфиксную (операция записывается после операнда). В префиксной форме сначала изменяется операнд, а затем его значение становится результирующим значением выражения; в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется:
Примеры
...
int x = 3, y = 3;
printf ("Значение префиксного выражения: % d \ n", ++ x);
printf ("Значение постфиксного выражения: % d \ n", y ++ );
...
На экране:
Результат префиксного значения: 4
Результат префиксного значения: 3
Операция определения размера sizeof предназначена для вычисления размера объекта или типа в байтах и имеет две формы:
sizeof выражение
sizeof (тип)
Операция sizeof (float) вернет значение 4 (длина в байтах типа float).
Операция sizeof (х + 0.1) вернет значение 8 (если х описана как float) − эта величина получается потому, что вещественные константы по умолчанию описываются как double, т. е. имеют длину 6 байтов.
Операции присваивания могут использоваться в программах как законченные операции. В сложных операциях присваивания (+=, -= и т. д.) при вычислении значения в правой части используется значение из левой части:
...
int a = 3, b = 5, c =4;
c = b + c;
a += b; // это более компактная запись a = a + b
...
Условная операция ? : − это тернарная операция. Ее формат:
операнд_1 ? операнд_2 : операнд_3
Первый операнд оценивается с точки зрения эквивалентности его нулю (операнд, равный нулю, оценивается как false, не равный нулю − как true). Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение операнда 2, иначе − операнда 3. Условная операция является сокращенной формой оператора if.
Пример
int a = 11, b = 4, max;
max = (b > a)? b : a;
printf ("Наибольшее число: % d", max);
На экране будет напечатано:
Наибольшее число: 11