
- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Типы данных
Основные типы данных Турбо Паскаля имеют соответствующие эквиваленты в Турбо Си. Однако Си имеет как значительно большее разнообразие типов данных с широким выбором числовых диапазонов для значений целых и с плавающей точкой, так и спецификаторов signed и unsigned (со знаком и без знака). В Си по сравнению с Паскалем отсутствуют типы: диапазон, логический, процедурный (вместо него есть указатель на функцию), строковый, множество.
Кроме того, в Си в отличие от Паскаля, есть правила умолчания. Так, если забыли описать переменную, то по умолчанию она получит тип Signed int.
Классификация типов данных
Модификаторы типа:
short (короткий)
long (длинный)
signed (со знаком)
unsigned (без знака)
Целые
(пределы их значений в Си хранятся в limits.h)
unsigned char (1 байт) 0 - 255
unsigned char (1 байт) 0 – 255
Замечания:
на Си не различаются символьный и целый типы (хранятся и обрабатываются одинаково). Символьные константы и переменные можно использовать в арифметических выражениях:
d=c-'s';
для представления русских символов требуется unsigned char (по умолчанию будет signed char)
signed char 1 байт (-128 .. +127)
Замечание: можно явно не указывать signed. Оно подразумевается по умолчанию
short (2 байта) -32768..32767 (всегда 2 байта)
int (2 байта) -32769..32767 (или 4 байта)
по умолчанию размер int совпадает с размером слова на данной ЭВМ (на 16-разр. ЭВМ - 16 бит, на 32-разр. ЭВМ - 32 бит = 4 байта)
unsigned int (2 байта) 0..65535. У констант суффикс U : 325U
long (4 байта) -2^31..2^31-1. У констант суффикс L: 75000L
unsigned long (4 байта) 0..(2^32-1). У констант суффикс UL: 125000UL
В ASNI C-99 long long – 8 байт.
Вещественные
(пределы их значений в Си хранятся в float.h)
Имя типа |
размер |
диапазон |
|
|
|
float |
4 байта |
±3.4E+308 |
double |
8 байт |
±1.7E+308 |
long double |
10 байт |
|
unsigned long |
8 байт |
|
Логический
В Си нет логического типа данных: выражения, в которых требуются логические значения, интерпретируют значения "ноль", как false(ложь), а все другие (не равные нулю), как "true" (истина).
В Borland C++ есть тип BOOL со значениями false и true.
Диапазоны представления данных
Тип |
Размер, бит |
Диапазон |
unsigned char |
8 |
0…255 |
char |
8 |
–128…127 |
enum |
16 |
–32 768…32 767 |
unsigned short |
16 |
0…65535 |
short |
16 |
–32768…32767 |
unsigned int |
16 32 |
0…65535 0…4 294 967 295 |
int |
16 32 |
–32 768…32 767 –2 147 483 648 …2 147 483 647 |
unsigned long |
32 |
0…4 294 967 295 |
long |
32 |
–2 147 483 648 …2 147 483 647 |
float |
32 |
3.4*10–38…3.4*10+38 |
double |
64 |
1.7*10–308…1.7*10+308 |
long double |
80 |
1.7*10–4932…1.7*10+4932 |
pointer |
16 32 |
(указатели near, _cs, _ds, _es, _ss) (указатели far, huge) |
Объявление переменных
Основная форма объявления переменных имеет вид
type <список_переменных> ;
Здесь type должен быть одним из существующих в С типов переменных, а <список_переменных> может состоять из одной или нескольких переменных, разделенных запятыми. При объявлении переменных компилятор выделяет место в памяти компьютера, необходимое для размещения переменной данного типа. Примеры объявлений переменных:
int x, у, z;
float radius;
unsigned char ch;
long double integral;