Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Типы данных






Программы оперируют с различными данными, которые могут быть простыми (скалярными) и структурированными. Простые данные - это целые и вещественные числа, перечисляемые и указатели (адреса объектов в памяти). Целые числа не имеют, а вещественные имеют дробную часть. Структурированные данные - это массивы и структуры.

 

  Типы данных  
   
       
Скалярные   Структурированные
     
         
Числовые   Перечисляемые   Массивы   Структуры
     
      Объединения
       
Целые   Вещественные
     
       
signed (со знаком)   unsigned (без знака)    
                                           

 

 

В языке Си различают понятия " тип данных" и " модификатор типа". Тип данных - это, например, целый, а модификатор - со знаком или без знака. Целое со знаком будет иметь как положительные, так и отрицательные значения, а целое без знака - только положительные значения. В языке Си выделяются пять базовых типов, которые задаются следующими ключевыми словами:

char - символьный;

int - целый;

float - вещественный;

double - вещественный двойной точности;

void - не имеющий значения.

 

Краткая характеристика типов:

  1. Переменная типа char имеет размер 1 байт, ее значениями являются целые числа, различные символы из кодовой таблицы, например: 'ф', ': ', 'j' (при записи в программе они заключаются в одинарные кавычки).
  2. Размер переменной типа int в стандарте языка Си не определен. В большинстве систем программирования размер переменной типа int соответствует размеру целого машинного слова. Например, в компиляторах для 16-разрядных процессоров переменная типа int имеет размер 2 байта. В Visual Studio 2010 для 32-разрядных и 64-разрядных процессоров переменная типа int имеет размер 4 байта.
  3. Ключевое слово float позволяет определить переменные вещественного типа. Их значения имеют дробную часть, отделяемую точкой от целой части. Переменная типа float занимает в памяти 4 байта.
  4. Ключевое слово double позволяет определить вещественную переменную двойной точности. Она занимает в памяти в два раза больше места, чем переменная типа float (т.е. ее размер 8 байта).
  5. Ключевое слово void (не имеющий значения) используется для нейтрализации значения объекта, например, для объявления функции, не возвращающей никаких значений.

 

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

  • unsigned – число без знака;
  • signed – число со знаком;
  • short – короткое число;
  • long – длинное число.

Использование модификаторов для базовых типов

 

Модификаторы записываются перед спецификаторами типа, например: unsigned char, long int. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:

short а;

signed short а;

short int а;

signed short int а;

являются идентичными и определяют объект а, как короткий целый (2 байта). Строки:

unsigned b;

unsigned int b;

определяют объект b, как целый без знака(4 байта).

Модификатор signed является необязательным и определяется по умолчанию. В Си принято соглашение по соотношению размерности объектов с модификаторами: short ≤ int ≤ long. В таблицах показаны возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int и double), а также приведены размеры полей и диапазоны значений объекта (для 32-разрядных компиляторов).

 

Целые типы

Тип Размер в байтах (битах) Интервал изменения
char, signed char 1 (8) от -128 до 127
unsigned char 1 (8) от 0 до 255
short int, signed short int 2 (16) от -32768 до 32767
unsigned short int 2 (16) от 0 до 65535
int, signed int 4 (32) от -2147483648 до 2147483647
unsigned int 4 (32) от 0 до 4294967295
long int, signed long int 4 (32) от -2147483648 до 2147483647
unsigned long int 4 (32) от 0 до 4294967295
long long int, signed long long int 8 (64) от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
unsigned long long int 8 (64) от 0 до 18 446 744 073 709 551 615

 

Вещественные типы

Точность float double long double
Размер (байты)      
Число десятичных знаков ~7.2 ~15.9 ~19.2
Наименьшее значение (> 0), denorm 1, 401298·10− 45 4, 940656·10− 324 1, 9·10− 4951
Наименьшее значение (> 0), normal 1, 175494·10− 38 2, 225074·10− 308 3, 4·10− 4932
Наибольшее значение 3, 402823× 10+38 1, 797693× 10+308 1, 1× 10+4932
Поля S-E-F S-E-F S-E-I-F
Размеры полей 1-8-23 1-11-52 1-15-1-63

· S — знак, E — показатель степени, I — целая часть, F — дробная часть

· Так же, как и для целых, знаковый бит — старший.

· В Visual studio 2010 типы double и long double – это различные типы, но по диапазону представления чисел long double эквивалентен double.

 

Модификатор const позволяет определить имя, тип и задать значение константе. Строки

const float x = 32.78;

const int short_MIN = -32768;

- определяет вещественную константу x со значением 32.78 и целочисленную константу short_MIN со значением -32768. Использовать эти значения в программе можно по имени константы, изменять значения констант в программе не разрешается. В памяти для констант выделяется количество байт в соответствии с размерностью заданного для нее типа.

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

Директива #define также используется для определения константных значений. В отличие от использования спецификатора const память для определяемых имен не выделяется. Например:

#define NMAX 100

...

int a[NMAX];

double x[NMAX];

В том случае в тексте программы везде, где встречается имя NMAX, перед компиляцией производится замена имени NMAX на его значение 100. После замены в программе будут строки:

int a[100];

double x[100];

Только после этого начинается компиляция программы. Эта подмена действует только на время компиляции и не изменяет исходную программу.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.