- •Базовые понятия информатики. Понятие «Информатика» и «Информация»
- •Информация
- •Информационные технологии
- •Понятие алгоритма. Свойства и классы алгоритмов. Формы представления алгоритмов
- •Понятие алгоритма. Базовые алгоритмические структуры
- •Представление данных в памяти персонального компьютера.
- •Принципы обработки программных кодов
- •Компиляторы
- •Интерпретатор
- •Язык с. История развития. Основные свойства языка
- •Отличительные особенности языкаC
- •Элементы языка c
- •Константы
- •Базовые типы данных
- •Директива #include
- •Использование void
- •Инструкция return
- •Описание переменных
- •Обработка данных. Операторы
- •Арифметические операторы
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Аккумуляторы
- •Преобразования типов данных
- •Декларации и дефиниции функций
- •Формальные и фактические параметры. Вызов функций
- •Возврат функцией значений
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Значения параметров по умолчанию
- •Перегрузка функций
- •Рекурсия
- •Встроенные функции
- •Обработка символьных данных
- •Функция puts()
- •Функция putchar()
- •Функция printf()
- •Выбор правильных средств вывода информации
- •Функция gets()
- •Функция getchar()
- •Функция scanf()
- •Выбор соответствующих средств ввода данных
- •Управляющие структуры Структуры выбора (if / else)
- •Структуры выбора (switch/case/default)
- •Структуры повторения (циклы)
- •Использование цикла for
- •Использование цикла do...While (постусловие)
- •Использование цикла while (предусловие)
- •Операторы передачи управления Оператор безусловного перехода goto
- •Оператор break
- •Оператор continue
- •Препроцессор языка Си
- •Массивы Объявление переменной массива
- •Использование индексной переменной
- •Инициализация массива при объявлении
- •Передача массивов в функции
- •Использование констант при объявлении массивов
- •Символьные строки
- •Массивы строк
- •Алгоритмы сортировки массива
- •Поиск заданного элемента в массиве
- •Указатели
- •Объявление указателя
- •Указатели на массивы
- •Операции над указателями
- •Указатели на строку
- •Указатели на функцию
- •Функции, возвращающие указатель
- •Указатели на многомерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Структуры данных
- •Реализация одних структур на базе других
- •Очередь
- •Операции над очередями
- •Операции над стеками
- •Ссылочные реализации структур данных
- •Операции над списками
Приоритет операторов и порядок вычислений
Когда компьютер встречает уравнение, он выполняет математические действия не просто слева направо. Прежде всего, он просматривает строку и определяет порядок выполнения операций, основываясь на приоритете операторов. Приоритет операторов означает, что одни операторы выполняются раньше других независимо от того, в какой последовательности они записаны в уравнении.
Для арифметических операций используется обычная алгебраическая приоритетность, в соответствии с которой умножение, деление и деление по модулю выполняются перед сложением и вычитанием. Если две операции обладают равным приоритетом, то в C++, чтобы определить ранее выполняемую операцию, используются правила ассоциативности. Операции, принадлежащие к одной и той же группе, обладают равным приоритетом и свойством ассоциативности, таким как "справа налево" или "слева направо". Свойство ассоциативности "слева направо" обозначает, что сначала выполняется операция, записанная слева, тогда как при ассоциативности "справа налево" первой выполняется операция, записанная справа.
Если ваши программы должны выполнять арифметические операции в определенном порядке, вы можете заключить выражение в круглые скобки. Когда C++ оценивает выражение, он сначала всегда выполняет операции, сгруппированные в круглых скобках. Например, рассмотрим следующее выражение:
result =(2+3)* (3+4);
C++ вычисляет данное выражение в следующем порядке:
result = (2 + 3) * (3 + 4); = (5) * (3 + 4); = 5 * (7); =5*7; = 35;
Подобным образом группируя выражения внутри круглых скобок, вы можете управлять порядком, в котором C++ выполняет арифметические операции.
Выражения со знаками операций могут участвовать в выражениях как операнды. Выражения со знаками операций могут быть унарными (с одним операндом), бинарными (с двумя операндами) и тернарными (с тремя операндами).
Унарное выражение состоит из операнда и предшествующего ему знаку унарной операции и имеет следующий формат:
знак-унарной-операции операнд.
Бинарное выражения состоит из двух операндов, разделенных знаком бинарной операции:
операнд1 знак-бинарной-операции операнд2.
Тернарное выражение состоит из трех операндов, разделенных знаками тернарной операции (?) и (:), и имеет формат:
операнд1 ? операнд2 : операнд3 .
По количеству операндов, участвующих в операции, операции подразделяются на унарные, бинарные и тернарные.
В языке Си имеются следующие унарные операции:
- арифметическое отрицание (отрицание и дополнение);
~ побитовое логическое отрицание (дополнение);
! логическое отрицание;
* разадресация (косвенная адресация);
& вычисление адреса;
+ унарный плюс;
++ увеличение (инкремент);
-- уменьшение (декремент);
sizeof размер.
Унарные операции выполняются справа налево.
Операции увеличения и уменьшения увеличивают или уменьшают значение операнда на единицу и могут быть записаны как справа так и слева от операнда. Если знак операции записан перед операндом (префиксная форма), то изменение операнда происходит до его использования в выражении. Если знак операции записан после операнда (постфиксная форма), то операнд вначале используется в выражении, а затем происходит его изменение.
В отличие от унарных, бинарные операции, список которых приведен в табл, выполняются слева направо.
Таблица
Знак операции |
Операция |
Группа операций |
* |
Умножение |
Мультипликативные |
/ |
Деление | |
% |
Остаток от деления | |
+ |
Сложение |
Аддитивные |
- |
Вычитание | |
<< |
Сдвиг влево |
Операции сдвига |
>> |
Сдвиг вправо | |
< |
Меньше |
Операции отношения |
<= |
Меньше или равно | |
>= |
Больше или равно | |
== |
Равно | |
!= |
Не равно | |
& |
Поразрядное И |
Поразрядные операции |
| |
Поразрядное ИЛИ | |
^ |
Поразрядное исключающее ИЛИ | |
&& |
Логическое И |
Логические операции |
|| |
Логическое ИЛИ | |
, |
Последовательное вычисление |
Последовательного вычисления |
= |
Присваивание |
Операции присваивания |
*= |
Умножение с присваиванием | |
/= |
Деление с присваиванием | |
%= |
Остаток от деления с присваиванием | |
-= |
Вычитание с присваиванием | |
+= |
Сложение с присваиванием | |
<<= |
Сдвиг влево с присваиванием | |
>>= |
Сдвиг вправо присваиванием | |
&= |
Поразрядное И с присваиванием | |
|= |
Поразрядное ИЛИ с присваиванием | |
^= |
Поразрядное исключающее ИЛИ с присваиванием |
Левый операнд операции присваивания должен быть выражением, ссылающимся на область памяти (но не объектом, объявленным с ключевым словом const).