- •1.Назначение алгоритмических языков программирования. Круг решаемых задач.
- •2. Понятие типов данных. Представление о двоичной арифметике. Базовые типы данных
- •3. Описатели базовых типов данных языка Си. Перечислите все стандартные описатели
- •4. Переменные в Си: назначение, допустимые имена, описание и инициализация. Различие
- •Переменные и константы
- •5. Операции в Си: назначение и отличия от операндов, операторов, выражений и функций.
2. Понятие типов данных. Представление о двоичной арифметике. Базовые типы данных
Си (целый, плавающий, указатель). Их стандартное представление в двоичной форме и
занимаемый объём памяти ЭВМ.
Типы данных. Программы оперируют с различными данными, которые могут быть простыми и структурированными. Простые данные - это целые и вещественные числа, символы и указатели (адреса объектов в памяти). Целые числа не имеют, а вещественные имеют дробную часть. Структурированные данные - это массивы и структуры; они будут рассмотрены ниже.
В языке различают понятия "тип данных" и "модификатор типа". Тип данных - это, например, целый, а модификатор - со знаком или без знака. Целое со знаком будет иметь как положительные, так и отрицательные значения, а целое без знака - только положительные значения. В языке Си можно выделить пять базовых типов, которые задаются следующими ключевыми словами:
char - символьный;
int - целый;
float - вещественный;
double - вещественный двойной точности;
void - не имеющий значения.
Дадим им краткую характеристику:
Переменная типа char имеет размер 1 байт, ее значениями являются различные символы из кодовой таблицы, например: 'ф', ':', 'j' (при записи в программе они заключаются в одинарные кавычки).
Размер переменной типа int в стандарте языка Си не определен. В большинстве систем программирования размер переменной типа int соответствует размеру целого машинного слова. Например, в компиляторах для 16-разрядных процессоров переменная типа int имеет размер 2 байта. В этом случае знаковые значения этой переменной могут лежать в диапазоне от -32768 до 32767.
Ключевое слово float позволяет определить переменные вещественного типа. Их значения имеют дробную часть, отделяемую точкой, например: -5.6, 31.28 и т.п. Вещественные числа могут быть записаны также в форме с плавающей точкой, например: -1.09e+4. Число перед символом "е" называется мантиссой, а после "е" - порядком. Переменная типа float занимает в памяти 32 бита. Она может принимать значения в диапазоне от 3.4е-38 до 3.4e+38.
Ключевое слово double позволяет определить вещественную переменную двойной точности. Она занимает в памяти в два раза больше места, чем переменная типа float (т.е. ее размер 64 бита). Переменная типа double может принимать значения в диапазоне от 1.7e-308 до 1.7e+308.
Ключевое слово void (не имеющий значения) используется для нейтрализации значения объекта, например, для объявления функции, не возвращающей никаких значений.
Двоичная система счисления — позиционная система счисления с основанием 2.
В этой системе счисления числа записываются с помощью двух символов (0 и 1).
3. Описатели базовых типов данных языка Си. Перечислите все стандартные описатели
типов - целочисленные и с плавающей точкой. Модификаторы описания базовых типов
(signed/unsigned, short/long). Определение пользователем альтернативных имён типов
данных при помощи директив препроцессора и директивы typedef.
Описатели в языке Си позволяют объявить следующие объекты: простые переменные, массивы, указатели и функции. В простейшем случае, если объявляется простая переменная базового типа, либо структура, либо объединение, описатель представляет собой идентификатор. При этом объекту присваивается тип, заданный спецификацией типа.
Следующие примеры иллюстрируют простейшие формы описателей:
int list(20] —массив list значений целого типа;
char *ср -указатель ср на значение типа char;
double func() —функция func, возвращающая значение типа double.
Объект некоторого базового типа может быть модифицирован. С этой целью используются специальные ключевые слова, называемые модификаторами. В стандарте ANSI языка Си имеются следующие модификаторы типа:
unsigned
signed
short
long
Модификаторы записываются перед спецификаторами типа, например: unsigned char. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:
long а;
long int а;
являются идентичными и определяют объект а как длинный целый. Табл. 1 иллюстрирует возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int, float и double), а также показывает размер и диапазон значений объекта (для 16-разрядных компиляторов).
Таблица 1
Тип |
Размер в байтах (битах) |
Интервал изменения |
char |
1 (8) |
от -128 до 127 |
unsigned char |
1 (8) |
от 0 до 255 |
signed char |
1 (8) |
от -128 до 127 |
int |
2 (16) |
от -32768 до 32767 |
unsigned int |
2 (16) |
от 0 до 65535 |
signed int |
2 (16) |
от -32768 до 32767 |
short int |
2 (16) |
от -32768 до 32767 |
unsigned short int |
2 (16) |
от 0 до 65535 |
signed short int |
2 (16) |
от -32768 до 32767 |
long int |
4 (32) |
от -2147483648 до 2147483647 |
unsigned long int |
4 (32) |
от 0 до 4294967295 |
signed long int |
4 (32) |
от -2147483648 до 2147483647 |
float |
4 (32) |
от 3.4Е-38 до 3.4Е+38 |
double |
8 (64) |
от 1.7Е-308 до 1.7Е+308 |
long double |
10 (80) |
от 3.4Е-4932 до 3.4Е+4932 |
|
|
|
|
директива typedef позволяет создать собственный тип данных, например
typedef int MASSIV[14]-тип массив
