- •Определение алгоритма
- •Классификация языков
- •Модификаторы доступа
- •Объявление переменных
- •Локальные переменные
- •Формальные параметры
- •Глобальные переменные
- •Спецификаторы хранения
- •Оператор присваивания
- •Инициализация переменных
- •Константы
- •Операторы
- •Оператор ?
- •Операторы указания & и *
- •Оператор sizeof
- •Оператор «запятая»
- •Выражения
- •Преобразования типов в выражениях
- •Принудительные преобразования типов
- •Оператор break
- •Оператор continue
- •Метки и goto
- •Одномерный массив
- •Создание указателя на массив
- •Двумерные массивы
- •Массивы строк
- •Многомерные массивы
- •Индексация с помощью указателей
- •Размещение массивов
- •Функции
- •Оператор return
- •Правила видимости для функций
- •Аргументы функции. Передача по значению и передача по указателю
- •Передача массивов в функции
- •Аргументы функции main()
- •Возврат указателей
- •Указатели на функции
- •Структуры
- •Доступ к членам структуры
- •Присваивание структур
- •Массивы структур
- •Указатели на структуры
- •Битовые поля
- •Объединения
- •Перечисления
- •Использование typedef
- •Ввод, вывод, потоки и файлы
- •Форматированный консольный ввод-вывод
- •Модификаторы формата
- •Файловая система ansi c
- •Запись и чтение символа
- •Использование feof()
- •Работа со строками: fgets() и fputs()
- •Указатели
- •Односвязные списки
- •Обход односвязного списка
- •Бинарное дерево поиска. Вставка и поиск элемента по ключу в бинарном дереве поиска. Поиск элемента (find)
- •Добавление элемента (insert)
- •Бинарное дерево поиска. Удаление элемента из бинарного дерева поиска. Удаление узла (remove)
- •Обход бинарного дерева
- •Балансировка бинарного дерева поиска
Операторы
Оператор – это символ, который сообщает компилятору о необходимости выполнения некоторых математических или логических действий.
Арифметические операторы
Приоритет выполнения арифметических операций следующий:
высший +(унарный плюс) – (унарный минус) ++ * / %
низший + (бинарные операторы)
Операторы, обладающие одним приоритетом, вычисляются компилятором слева направо. Круглые скобки в С устанавливают наивысший приоритет операций.
Операторы отношения и логические операторы
Ключевой концепцией операторов отношения и логических операторов является понятие истины и лжи. В С истине соответствует любое значение кроме 0, лжи – 0. Выражение, использующее операторы отношения или логические операторы, возвращает 0 для лжи и 1 для истины.
Операция |
Значение |
Пример |
! |
Логическое НЕ |
!EOF |
= = |
Равно |
value==0 |
!= |
Не равно |
value!=0 |
< |
Меньше |
i<count |
> |
Больше |
i>count |
> = |
Больше или равно |
i>=count |
< = |
Меньше или равно |
i<=count |
|| |
Логическое ИЛИ |
!a || b |
&& |
Логическое И |
a>8 && c<5 |
Таблица истинности для логических операторов образована с использованием на входах 1 и 0:
P |
q |
p&&q |
p||q |
!p |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
Как операторы отношения, так и логические операторы имеют более низкий приоритет по сравнению с арифметическими операторами.
Ниже показаны приоритеты выполнения операторов отношения и логических операторов
высший !
> >= < <=
== !=
&&
низший ||
Битовые операторы
С поддерживает все существующие битовые операторы. Битовые операции – это считывание, установка или сдвиг битов в байте или слове, которые соответствуют стандартным типам языка С char и int. Битовые операции не могут использоваться с float, double, long double, void и другими сложными типами.
Оператор |
Действие |
& |
И |
| |
ИЛИ |
^ |
Исключающее ИЛИ |
~ |
Дополнение |
>> |
Сдвиг вправо |
<< |
Сдвиг влево |
Битовые операторы И, ИЛИ, НЕ используют ту же таблицу истинности, что и их логические эквиваленты, за тем исключением, что они работают побитно. Исключающее ИЛИ имеет следующую таблицу истинности:
p q p^q
0 0 0
0 1 1
1 0 1
1 0
Битовое И чаще всего используется для обнуления битов. То есть любой бит установленный в 0, вызывает установку соответствующего бита в другом операнде в также в 0. Например, следующая функция читает символы из порта модема, используя функцию read_modem(), и сбрасывает бит чётности в 0.
char get_char_from_modem(void)
{
char ch;
ch = read_modem();
return (ch & 127);
}
Чётность отображается старшим битом, который устанавливается в 0 с помощью битового И, поскольку 7 младших бит равны 1.