ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.12.2020
Просмотров: 4230
Скачиваний: 28
Г Л А В А
2
Встроенные типы данных
и переменные
2.1. Базовые типы данных
Тип данных
определяется как множество значений и множество
операций, допустимых над этими значениями. В табл. 2.1 приве-
дены
базовые типы данных
, предопределенные в языке про-
граммирования С.
Таблица 2.1.
Базовые типы данных
Тип данных
Длина в байтах
Диапазон значений
char
1
0...255 или -128 ... 127
int
Не менее 2
Зависит от длины
float
4
-3.4E-38 ... 3.4E+38
double
8
-1.8E-308 ... 1.8E+308
В стандарте языка C длина в байтах и, соответственно, диапазон
типа данных
int
не определены точно и зависят от системы, на
которой реализован компилятор. Под системой понимается мик-
ропроцессор и операционная система, на которой функционирует
компилятор. Однако предполагается, что этот тип данных, по
крайней мере, содержит диапазон целых чисел от
-32768
до
32767
.
Диапазоны типов данных
float
и
double
приведены с округлени-
ем до первого знака после точки. Точные границы этих диапазо-
нов указаны в заголовочном файле float.h.
Часть I. Язык программирования С
32
Кроме того, в языке программирования C определен тип данных
void
, который определяет пустое множество значений. Этот тип
данных используется только в следующих случаях:
для определения функций, которые не возвращают значения;
для определения функций, которые не имеют параметров;
для определения родовых указателей.
Все эти случаи будут подробно рассмотрены в соответствующих
разделах.
2.2. Модификаторы типов
Для более точного выбора диапазона значений базового типа
данных используются
модификаторы типов
, которые делятся на
две группы: модификаторы длины и модификаторы знака.
Моди-
фикаторы длины
задаются следующими ключевыми сло-
вами:
short
— короткое представление;
long
— длинное представление.
Модификаторы знака
задаются следующими ключевыми словами:
signed
— значение данного типа имеет знак;
unsigned
— значение данного типа не имеет знака.
Использование модификаторов типов данных подчиняется сле-
дующим правилам:
с типом данных
char
используются только модификаторы
знака;
с типом данных
int
могут использоваться как модификаторы
длины, так и модификаторы знака;
с типом данных
float
по стандарту языка C модификаторы не
используются, хотя некоторые компиляторы воспринимают
тип
long float
как тип
double
;
с типом данных
double
используется только модификатор
длины
long
, использование с типом данных
double
модифика-
тора длины
short
вызовет ошибку.
Глава 2. Встроенные типы данных и переменные
33
2.3. Спецификаторы типов
Комбинация модификаторов типа данных и базового типа дан-
ных называется
спецификатором типа данных.
При этом отме-
тим следующие два момента.
Во-первых, в некоторых случаях для краткого обозначения спе-
цификатора типа данных может использоваться только ключевое
слово, обозначающее модификатор типа данных.
Во-вторых, при определении спецификатора типа порядок пере-
числения ключевых слов, обозначающих модификаторы и тип, не
имеет значения. Перечислим спецификаторы типов данных, при-
нимая во внимание второе замечание и учитывая правила исполь-
зования модификаторов с простыми типами данных.
Спецификаторы символьных типов данных приведены в
табл. 2.2.
Таблица 2.2.
Спецификаторы символьных типов данных
Спецификатор типа
Длина в байтах
Диапазон значений
char
1
0 ... 255 или -128 ... 127
signed char
1
-128 ... 127
unsigned char
1
0 ... 255
Спецификаторы целочисленных типов данных приведены в
табл. 2.3.
Таблица 2.3.
Спецификаторы целочисленных типов данных
Спецификатор типа
Длина
в байтах
Диапазон значений
short int
2
-32768 ... 32767
short
2
-32768 ... 32768
signed short int
2
-32768 ... 32767
signed short
2
-32768 ... 32767
Часть I. Язык программирования С
34
Таблица 2.3
(окончание)
Спецификатор типа
Длина
в байтах
Диапазон значений
unsigned short int
2
0 ... 65535
unsigned short
2
0 ... 65535
signed int
Не менее 2
Зависит от длины
signed
Не менее 2
Зависит от длины
int
Не менее 2
Зависит от длины
unsigned int
Не менее 2
Зависит от длины
unsigned
Не менее 2
Зависит от длины
long int
4
–2147483648 ... 2147483647
long
4
–2147483648 ... 2147483647
signed long int
4
–2147483648 ... 2147483647
signed long
4
–2147483648 ... 2147483647
unsigned long int
4
0 ... 4294967295
unsigned long
4
0 ... 4294967295
Спецификаторы типов данных с плавающей точкой приведены в
табл. 2.4.
Таблица 2.4.
Спецификаторы типов данных с плавающей точкой
Спецификатор типа
Длина в байтах
Диапазон значений
float
4
-3.4E-38 ... 3.4E+38
double
8
-1.8E-308 ... 1.8E+308
long double
10
-1.2E-4932 ... 1.2E4932
Спецификаторы типов данных определяют полный набор типов
данных,
встроенных
в язык программирования С. Встроенные
типы данных также называются
предопределенными
, или
стан-
дартными
, или
фундаментальными
типами данных.
Глава 2. Встроенные типы данных и переменные
35
Типы данных, построенные на основе встроенных типов данных,
называются
сложными
(compound). Поэтому встроенные типы
данных часто также называются
простыми
(simple). К сложным
типам данных относятся указатели, массивы, перечисления,
структуры и объединения. Все эти типы данных будут рассмот-
рены в дальнейшем.
2.4. Переменные
Переменная
или
объект
— это поименованная область памяти,
в которой хранятся данные. Для именования переменных исполь-
зуются идентификаторы. Прежде чем переменная может исполь-
зоваться в программе, она должна быть объявлена. Объявление
переменной выглядит следующим образом:
спецификатор_типа список_идентификаторов;
где
спецификатор_типа
является одним из спецификаторов, рас-
смотренных в предыдущем разделе, а
список_идентификаторов
представляет собой один или несколько идентификаторов, отде-
ленных друг от друга запятыми. Например, переменные могут
быть объявлены следующим образом:
float d;
int i, j, k;
long double b;
unsigned long u;
Не может быть объявлена переменная типа
void
, т. к. компилято-
ру неизвестно, сколько памяти нужно отводить под такую пере-
менную.
В языке программирования C переменные должны объявляться
в начале блока. В языке программирования C++ переменные мо-
гут объявляться там, где допустимо использование инструкции.
При своем объявлении переменным могут присваиваться началь-
ные значения или, другими словами, переменные могут инициа-
лизироваться. Для инициализации переменных используется опе-