- •Министерство образования Республики Беларусь
- •1. Что такое программа на языке программирования
- •2. Общее знакомство с языком с
- •3. Структура простой программы на языке с
- •4. Что такое программа на языке с
- •5. Представление информации и типы данных в языке с
- •6. Константы
- •7. Переменные
- •8. Элементарный вВод и вывод информации
- •9. Выражения и операции
- •9.1. Арифметические операции
- •9.2. Операция изменения знака
- •9.3. Операции инкремента и декремента
- •9.4. Операция присваивания
- •9.6. Поразрядные логические операции
- •9.8. Логические операции и операции отношения
- •9.9. Условная операция «? :»
- •9.10. Операция последовательного вычисления
- •9.11. Операция определения требуемой памяти в байтах sizeof
- •9.12. Операция приведения типа (type)
- •10. Операторы управления вычислительным процессом
- •10.1. Операторы ветвления if и else
- •10.2. Оператор switch
- •10.3. Оператор цикла while
- •10.4. Оператор цикла do…while
- •10.5. Оператор цикла for
- •10.6. Бесконечные циклы
- •10.7. Другие управляющие средства языка с
- •10.8. Стандартные математические функции
- •11. Вычисление выражений и побочные эффекты
- •11.1. Преобразования типов при вычислении выражений
- •11.2. Побочные эффекты при вычислении выражений
- •12. Массивы
- •12.1. Описание массива
- •12.2. Инициализация массива
- •12.3. Ввод-вывод массива
- •12.4. Двумерные массивы (массивы массивов)
- •13. Указатели
- •14. Адресная арифметика
- •15. Массивы и указатели
- •15.1. Указатели и одномерные массивы
- •15.2. Указатели и двумерные массивы
- •16. Строки
- •17. Массивы строк
- •18. Функции
- •18.1. Определение функции в языке с
- •18.2. Возвращение значений из функции
- •18.3. Формальные и фактические параметры функции
- •18.4. Вызов функции
- •18.5. Объявление и определение функции: прототип функции
- •19. Передача параметров в функции
- •19.1. Способы передачи параметров в функции
- •19.2. Передача параметров в функции в языке с
- •19.3. Передача указателей в функции
- •20. Классы хранения и видимость переменных
- •20.1. Общие положения
- •20.2. Спецификаторы класса памяти
- •20.3. Область видимости функций
- •20.4. Глобальные переменные
- •20.5. Глобальные статические переменные
- •20.6. Локальные переменные
- •20.7. Статические локальные переменные
- •20.8. Регистровые переменные
- •20.9. Выводы
- •21. Организация памяти программы
- •22. Многофайловая компиляция (проекты)
- •23. Передача в функции массивОв
- •23.1. Передача одномерных массивов в функции
- •23.2. Передача двумерных массивов в функции
- •23.3. Передача в функции символьных строк
- •23.4. Возвращение указателей из функций
- •24. Функции с переменным количеством аргументов
- •24.1. Соглашения о вызовах: модификаторы функций
- •24.2. Объявление списка параметров переменной длины
- •25. Передача параметров в функцию main()
- •26. Указатели на функцию
- •27. Стандартные функцИи языка с
- •27.1. Функции для работы со строками
- •27.2. Функции для проверки символов и преобразования данных
- •27.3. Функция быстрой сортировки – gsort()
- •27.4. Функция двоичного поиска – bsearch()
- •28. Работа с файлами
- •28.1. Основные понятия
- •28.2. Основные функции для работы с файлами
- •28.3. Открытие и закрытие файлов
- •28.4. Ввод/вывод символов
- •28.5. Ввод/вывод строк
- •28.6. Форматированный ввод/вывод
- •28.7. Ввод/вывод блоков данных
- •28.8. Другие средства для работы с файлами
- •28.9. Ввод/вывод низкого уровня (префиксный доступ к файлам)
- •29. Типы, определяемые пользователем: Перечисления, структуры и объединения
- •29.1. Переименование типов – оператор typedef
- •29.2. Перечисления (enum)
- •29.3. Основные сведения о структурах
- •29.4. Структурные переменные в памяти компьютера
- •29.5. Доступ к полям структуры
- •29.6. Массивы структур
- •29.7. Структуры и функции
- •29.8. Объединения (union)
- •30. Динамическая память
- •30.1. Понятие динамического объекта
- •30.2 Создание и уничтожение динамических объектов
- •30.3 Динамическое размещение одномерных массивов и строк
- •30.4 Динамическое размещение двумерных массивов
- •30.5. Функции для работы с блоками памяти
- •31. Динамические структуры данных
- •31.1. Понятие структуры данных
- •31.2. Структуры, ссылающиеся на себя
- •31.3. Связанные списки
- •31.5. Очереди
- •Ниже приводятся примеры функций для очереди (структура элемента очереди совпадает со структурой элемента стека в примере выше):
- •32. Препроцессор языка с
- •32.1 Директива включения файлов
- •32.2. Директива определения макрокоманд (макросов)
- •32.3 Директива условной компиляции
- •32.4 Дополнительные директивы препроцессора
9. Выражения и операции
Выражение – это последовательность операндов и операций. Значения, участвующие в операциях, называются операндами. Операнды – это переменные, константы либо другие выражения. Выражение может состоять из одной или более операций. Когда выражение содержит более чем одну операцию, порядок их выполнения определяется соотношением приоритетов – операция с более высоким приоритетом выполняется раньше. Операции с одинаковым приоритетом обрабатываются в соответствии с их ассоциативностью (порядком выполнения). Ассоциативность бывает двух видов: слева направо и справа налево:
a=b+c*d => умножение имеет более высокий приоритет, чем сложение, у присваивания самый низкий приоритет => a=(b+(c*d))
a=b+c–d => присваивание последнее, сначала сложение, потом – вычитание, т.е. у них приоритет одинаковый, а ассоциативность (порядок выполнения) – слева направо => a=((b+c)–d)
Каждая операция возвращает какое-то значение. Например, операция 5+2 вернёт семь.
Операция |
Описание |
Пример |
Приоритет/ Ассоциативность |
Первичные и постфиксные | |||
[] |
индекс массива |
mas[5] |
16, слева направо |
() |
вызов функции |
puts(msg) |
16, слева направо |
. |
элемент структуры |
time.hour |
16, слева направо |
-> |
элемент структуры |
time->hour |
16, слева направо |
++ |
постфиксное приращение |
num++ |
15, слева направо |
-- |
постфиксное уменьшение |
num-- |
15, слева направо |
Унарные операции | |||
++ |
префиксное приращение |
++num |
14, справа налево |
-- |
префиксное уменьшение |
--num |
14, справа налево |
sizeof |
размер в байтах |
sizeof(num) |
14, справа налево |
(тип) |
преобразование типа |
(float)i |
14, справа налево |
~ |
побитовое НЕ |
~visible |
14, справа налево |
! |
логическое НЕ |
!EOF |
14, справа налево |
- |
унарный минус |
-i |
14, справа налево |
& |
адрес |
&num |
14, справа налево |
* |
разыменование |
*ptrNum |
14, справа налево |
Бинарные и тернарные операции | |||
Мультипликативные | |||
* |
умножение |
a*10 |
13, слева направо |
/ |
деление |
a/10 |
13, слева направо |
% |
взятие по модулю |
a%10 |
13, слева направо |
Аддитивные | |||
+ |
сложение |
a+10 |
12,слева направо |
- |
вычитание |
a-10 |
12,слева направо |
Побитовый сдвиг | |||
<< |
сдвиг влево |
a<<1 |
11, слева направо |
>> |
сдвиг вправо |
a>>1 |
11,слева направо |
Операции отношения | |||
< |
меньше |
i<n |
10,слева направо |
<= |
меньше или равно |
i<=10 |
10,слева направо |
> |
больше |
i>0 |
10,слева направо |
>= |
больше или равно |
i>=0 |
10,слева направо |
Равенство | |||
== |
равно |
|
9,слева направо |
!= |
не равно |
|
9,слева направо |
Битовые | |||
& |
побитовое И |
a&b |
8,слева направо |
^ |
побитовое исключающее ИЛИ |
a^b |
7, слева направо |
| |
побитовое ИЛИ |
a|b |
6,слева направо |
Логические | |||
&& |
логическое И |
a>0 && b>0 |
5, слева направо |
|| |
логическое ИЛИ |
a!=0 ||b==0 |
4, слева направо |
Условия | |||
?: |
при условии |
a>b ? 1: 0 |
3, справа налево |
Присваивание | |||
= |
присваивание |
x=10 |
2, справа налево |
*=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= |
присваивание произведения, частного, остатка и т.д. |
x+=10 x%=10 |
2, справа налево |
, |
запятая |
x=2, y=3; |
1, слева направо |
По числу участвующих операндов, операции делятся на три группы: унарные (у операции один операнд), бинарные (в операции участвуют два операнда), тернарные (в операции участвуют три операнда). В языке C всего одна операция, которая принимает три операнда – условная операция.
По типу выполняемой операции различают: арифметические, поразрядные логические, присваивания, операции отношения и др.
Рассмотрим основные и специфические операции языка С более подробно.