
- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Арифметические операции
Увеличение a++ и ++a
a++ и ++a являются двумя формами операции увеличения на 1.
Отличие в след.: когда применяется постфиксная форма, то вначале переменная участвует в выражении со своим текущим значением, и только после выполнения действий (вычисления значения выражения) значение переменной меняется.
В случае префиксной формы - наоборот.
Уменьшение a-- и --a
Умножение a= b*c;
Целочисленное деление a= b/c;
Деление x= b/c;
В отличие от Паскаля операция "/" с целыми операндами производит целый результат. Чтобы заставить ее для целых операндов получать вещественный результат, надо сделать приведение типов так, чтобы хотя бы один операнд был вещественным.
Модуль (остаток) A:= B mod C; a= b%c;
Сложение a=b+c;
Вычитание a=b-c;
Унарный минус a= - b;
Унарный плюс a= + b;
Операции отношения
Больше чем a > b
Больше или равно a >= b
Меньше чем a < b
Меньше или равно a <= b
Равно a==b
Не равно a!=b
Логические операции
Логическое НЕ !flag;
Замечание: эта операция (унарная) ненулевой (истина) операнд преобразует в 0, а 0 (ложь) - в 1. Эту операцию часто используют для замены конструкции <выражение == 0> на <!выражение>.
Эти конструкции используюся в операторах if (...).
Логическое И flag1 && flag2 ->
Логическое ИЛИ flag1 || flag2 ->
Замечание: Логические операции в Си (&&,||) - эффективно вычисляемые (то, что на Паскале называлось вычислением по короткой схеме). Это значит, операции вычисляются слева направо до тех пор, пока не определится истинность или ложность результата. Так, в отличие от Паскаля, Си позволяет записать:
while (i <= limit && list[i] != 0) ... ;
где limit - максимальный допустимый индекс массива list. Если первое выражение (i <= limit) ложно, то Си знает, что все выраже ние ложно и не надо вычислять второе выражение (list(i)!=0), где может быть ошибка в диапазоне индекса массива.
Поразрядные операции
Поразрядное дополнение a=~b;
Поразрядное И a=b&c;
Поразрядное исключающее ИЛИ a=b^c;
Поразрядное ИЛИ a=b|c;
Сдвиг вправо a=b>>c;
Сдвиг влево a=b<<c;
Операцияsizeof
Данная операция имеет две формы:
sizeof(тип)
sizeof(выражение)
Результат операции – целочисленная величина типа или выражения в байтах.
Операция выбора по условию
Эта операция - единственная, имеющая 3 операнда (E1,E2,E3), каждый из которых является выражением. Операция условия соединяет их следующим образом:
E = E1 ? E2 : E3;
--- --- ----
| |_____|____возвращаемые значения
анализируемое
выражение
Зачем это нужно? Как известно, оператор if не возвращает значений. А значения записанного выше выражения равно
- E2, если значение Е1 - истина;
- Е3, если значение Е1 - ложь.
Е = Е1 ? Е2 : Е3
-^--^- ----- -----
| | Е1-истина | |
| +---------------+ |
| Е1-ложь |
+--------------------- -+
Операция запятая
Эта операция объединяет два и более выражения в одно выражение, результатом которого (если он нужен) будет значение самого правого выражения. Значения всех других (кроме правого) операндов вычисляются лишь для получения побочного эффекта.