Главная » Статьи » Программирование » С/С++

Базовые типы данных

Переменные, константы, операции и выражения

Отметим, что операторы языка Си  манипулируют переменными и константами в виде выражений. В языке Си имена, которые используются для обозначения переменных, функций, меток и других объектов называются идентификаторами.

Базовые типы данных

В языке Си все переменные должны быть объявлены до их использования.

(1) Целый тип данных

Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (см. табл.).

Тип

Размер памяти в байтах

Диапазон значений

char

1

от -128 до 127

int

4

от -2 147 483 648 до 2 147 483 647

short

2

от -32768 до 32767

long

4

от -2 147 483 648 до 2 147 483 647

unsigned char

1

oт 0 до 255

unsigned int

4

от 0 до 4 294 967 295

unsigned short

2

от 0 до 65535

unsigned long

4

от 0 до 4 294 967 295

Отметим, что ключевые слова signed и unsigned необязательны. Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Например:

     unsigned int n;

     unsigned int b;

     int c;        (подразумевается  signed   int c  );

     unsigned d;   (подразумевается  unsigned int d  );

     signed f;     (подразумевается  signed   int f  ).

Отметим, что модификатор-типа char используется для представления символа (из массива представление символов) или для объявления строковых литералов. Значением объекта типа char является код (размером 1 байт), соответствующий представляемому символу. Для представления символов русского алфавита, модификатор типа идентификатора данных имеет вид unsigned char, так как коды русских букв превышают величину 127.

Следует сделать следующее замечание: в языке Си не определено представление в памяти и диапазон значений для идентификаторов с модификаторами-типа int и unsigned int. Размер памяти для переменной с модификатором типа signed int определяется длиной машинного слова, которое имеет различный размер на разных машинах. Так, на 16-ти разрядных машинах размер слова равен 2-м байтам, на 32-х разрядных машинах соответственно 4-м байтам, т.е. тип int эквивалентен типам short int, или long int в зависимости от архитектуры используемой компьютером. Таким образом, одна и та же программа может правильно работать на одном компьютере и неправильно на другом. Для определения длины памяти занимаемой переменной можно использовать операцию sizeof языка Си, возвращающую значение длины указанного модификатора-типа.

Например:

     a = sizeof(int);

     b = sizeof(long int);

     c = sizeof(unsigned long);

     d = sizeof(short);

Отметим также, что восьмеричные и шестнадцатеричные константы также могут иметь модификатор unsigned. Это достигается указанием префикса u или U после константы, константа без этого префикса считается знаковой.

 (2) Данные плавающего типа

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа : float, double, long double (в некоторых реализациях языка long double Си отсутствует).

Величина с модификатором-типа float занимает 4 байта. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.

Величина типа double занимает 8 бит в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

Примеры:

     float f, a, b;

     double x,y;

 

Категория: С/С++ | Добавил: Алексей (05.10.2014)
Просмотров: 770 | Теги: базовые типы данных, операции, константы, программирование, С++, выражения, Переменные | Рейтинг: 0.0/0
Всего комментариев: 0
avatar