- •1.Базовые элементы языка с. Алфавит и словарь языка
- •2. Основные типы данных. Классификация их типов. Модификация базовых типов.
- •3. Константы.
- •4. Переменные.
- •5. Структура с - программы. Понятие локальных и глобальных переменных. Функция main().Директивы препроцессора (#include и #define). Комментарии.
- •6. Операции языка с. Арифметические, логические операции. Поразрядные операции.
- •7. Операции языка с. Операция присваивания и отношения. Операция определения размера. Оператор последовательного вычисления.
- •8. Операции языка с. Условная операция. Операция (), операция [].
- •9. Приоритет операций и порядок вычислений.
- •11. Ввод-вывод символов
- •12. Форматированный ввод-вывод. Модификаторы формата. Спецификаторы преобразования. Подавление ввода.
- •13. Операторы языка с. Условные операторы (if и switch).
- •16. Одномерные массивы.
- •17. Строковый литерал. Чтение и запись строк.
- •18. Двухмерные массивы. Массивы строк.
- •20.Способы доступа к элементам массива
- •21. Понятие указателя. Инициализация указателей.
- •22. Указательные переменные. Операции получения адреса (&) и раскрытия ссылки(*).
- •23. Указательные выражения. Адресная арифметика.
- •Динамическое выделение памяти для массивов.
- •Функции. Определения функций. Оператор return.
- •Тип_результата id_функции (список);
- •Функции. Прототипы функций.
- •Тип_результата id_функции (список);
- •Функции. Вызов функций: вызов по значению и по ссылке.
- •Тип_результата id_функции (список);
- •Передача массива в функцию.
- •Классы памяти. Область видимости.
- •Аргументы функции main(): argv и argc.
- •Вызов библиотечных функций.
- •Директива препроцессора #define: создание макрофункций с помощью директивы #define.
- •Директивы условной компиляции #if, #else, #elif, #endif, #ifdef, #ifndef.
- •Понятие структуры. Доступ к членам структуры.
- •Присваивание структур.
- •Id_структуры . Id_поля
- •Передача членов структур функциям. Передача целых структур функциям.
- •Указатели на структуры. Средство typedef.
- •Понятия объединения и перечисления. Битовые поля.
- •Основы файловой системы. Стандартные потоки. Указатель файла. Открытие файла. Закрытие файла.
8. Операции языка с. Условная операция. Операция (), операция [].
Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением.
Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.
Оператор – это часть программы, которая может быть выполнена отдельно, т.е. оператор определяет некоторое действие.
Язык С содержит большое количество встроенных операций. Существует 5 основных класса операций:
– арифметические;
– логические;
– поразрядные;
– сравнения (присваивания);
– присваивания.
Условная операция
Тернарное выражение состоит из трех операндов, разделенных знаками тернарной операции (?) и (:),и имеет формат:
выражение1 ? выражение 2 : выражение 3
Сначала вычисляется выражение 1. Если оно истинно, то вычисляется выражение 2 и его значение присваивается всему выражению. Если выражение 1 ложно, то вычисляется выражение 3 и всему выражению присваивается его значение. Операции() и []
() Операция преобразования (или приведения) типа.
Эта бинарная операция в контексте так называемого постфиксного выражения и в контексте выражения приведения обеспечивает изменение типа значения выражения, представляемого вторым операндом. Информация о типе, к которому преобразуется значение второго операнда, кодируется первым выражением, которое является спецификатором типа. Существуют две формы операции преобразования типа: каноническая, при которой в скобки заключается первый операнд (в выражениях приведения), и функциональная (в постфиксных выражениях), при которой в скобки заключается второй операнд. При функциональной форме операции преобразования типа спецификатор типа представляется одним идентификатором. Для приввведениия значения к типу unsigned long следует использовать лишь каноническую форму операции преобразования. Механизм преобразования типа рассматривается ниже
Операция индексации
[] Операция индексации.
Играет роль бинарной операции при индексации элементов массива (определение массива приводится ниже). Левый операнд представляет собой выражение, значением которого является адрес первого элемента массива. Правый операнд является выражением, определяющим значение индекса, т.е. смещения относительно первого элемента массива.
9. Приоритет операций и порядок вычислений.
Правила записи выражений в языках высокого уровня:
все символы записываются в строку;
в выражении проставляются все знаки операций;
при записивыражений учитываются приоритеты операций;
для влияния на последовательность операций используются ().
В языке С операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в таблице 12.
Таблица 12
Приоритет |
Знак операции |
Типы операции |
Порядок выполнения |
1 |
- ~ ! * & ++ -- sizeof приведение типов |
Унарные |
Справа налево |
2 |
() [] . -> |
Выражение |
Слева направо |
3 |
* / % |
Мультипликативные |
Слева направо |
4 |
+ - |
Аддитивные |
|
5 |
<< >> |
Сдвиг |
|
6 |
< > <= >= |
Отношение |
|
7 |
== != |
Отношение (равенство) |
|
8 |
& |
Поразрядное И |
|
9 |
^ |
Поразрядное исключающее ИЛИ |
|
10 |
| |
Поразрядное ИЛИ |
|
11 |
&& |
Логическое И |
|
12 |
|| |
Логическое ИЛИ |
|
13 |
? : |
Условная |
|
14 |
= *= /= %= += -= &= |= >>= <<= ^= |
Простое и составное присваивание |
Справа налево |
15 |
, |
Последовательное вычисление |
Слева направо |
Правила преобразования типов при выполнении бинарных операций в языке Си:
для всех операций, кроме операции присваивания, при разных типах операндов
происходит преобразование величины с младшим типом к старшему;
при выполнении операции присваивания величина, полученная в правой части
преобразуется к типу переменной, стоящей слева от знака =.
10. Основные сведения о вводе-выводе
Возможности для ввода и вывода не являются частью самого языка С. Между тем реальные программы взаимодействуют со своим окружением гораздо более сложным способом, чем те, которые были затронуты ранее.
Библиотечные функции ввода-вывода точно определяются стандартом ANSI, так что они совместимы на любых системах, где поддерживается С. Программы, которые в своем взаимодействии с системным окружением не выходят за рамки возможностей стандартной библиотеки, можно без изменений переносить с одной машины на другую.
Свойства библиотечных функций специфицированы в более чем дюжине заголовочных файлов .
Во всех приведённых примерах программы первыми строчными являлись:
#include
#include
Данное описание сообщает компилятору о необходимости подключения файлов stdio.h и conio.h. Эти файлы содержат информацию, необходимую для правильного выполнения функций библиотеки стандартноговвода-вывода.
В файле stdio.h находится информация о стандартных функциях ввода-вывода. В файле conio.h находится функция getch(), которая ждет нажатия любой клавиши (читает символ, введенный пользователем с клавиатуры без вывода ее на экран).