Студопедия
Главная страница | Контакты | Случайная страница

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

Основные типы данных

Читайте также:
  1. A) это основные или ведущие начала процесса формирования развития и функционирования права
  2. A)простые, синтетические, аналитические, основные
  3. A]хранитель вправе по истечении обычного при данных обстоятельствах срока хранения вещи потребовать принятия поклажедателем вещи обратно
  4. B. Основные приложения метода координат на плоскости.
  5. ER-модель данных («Сущность - связь»): Проект ГИС (Логическая модель (Схемы алгоритмов, Логические схемы -> Модели данных), Физическая модель -> Перечень требований КТС).
  6. I. Исследование свойств форматов сжатия графических данных
  7. I. Основные богословские положения
  8. I. Основные положения
  9. I. ОСНОВНЫЕ ПОНЯТИЯ
  10. I. Основные формы исследования ППО

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

• int (целый);

• char (символьный);

• wchar_t (расширенный символьный);

• bool (логический);

• float (вещественный);

• double (вещественный с двойной точностью).

 

Первые четыре тина называют целочисленными {целыми), последние два — типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.

bool и wchar_t используются в С++, в С не используются.

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

• short (короткий);

• long (длинный);

• signed (знаковый);

• unsigned (беззнаковый).

Целый тип (int)

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном — int и long int.

Внутреннее представление величины целого типа — целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 — положительное число, 1 — отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов. Диапазоны значений величин целого типа с различными спецификаторами для IBM PC-совместимых компьютеров приведены в таблице 1.2

По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, 1 (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, Ox22UL или 05LU.

Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

 

Символьный тип (char)

Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

 

Расширенный символьный тип (wchar_t)

Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L"Games".

 

Логический тип (bool)

Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false — 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

 

Типы с плавающей точкой (float, double и long double)

Стандарт C++ определяет три типа данных для хранения вещественных значений: float, double и long double.

Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные.

Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка. В IBM PC-совместимых компьютерах величины

типа float занимают 4 байта, из которых один двоичный разряд отводится под

знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса — это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.

Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Как можно видеть из табл. 1.2, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления.

Спецификатор long перед именем типа double указывает, что под величину отводится 10 байт.

Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, 1 (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f — тип float.

 

 

Таблица 1. 2 Диапазоны значений простых типов данных для IBM PC

 

Тип Диапазон значений Размер в байтах
bool true и false  
signed char -128 … 127  
unsigned char 0 … 255  
signed short int -32768 … 32767  
unsigned short int 0 … 65535  
signed long int -2147483648 … 2147483647  
unsigned long int 0 … 4 294 967 295  
float 3.4e-38 … 3.4e38 -3.4e38 … -3.4e-38  
double 1.7e-308 … 1.7e308 -1.7e308 … -1.7e-308  
long double 3.4e-4932 … 3.4e4932 -3.4e4932 … -3.4e-4932  

 

Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 9Х или OS/2 результатом будет 4.

 

В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:

slzeof(float) < slzeof(double) < sizeof(long double)

sizeof(char) < slzeof(short) < sizeof(int) < sizeof(long)

Минимальные и максимальные допустимые значения для целых типов зависят от реализации и приведены в заголовочном файле <limits.h> (<c11m1ts>), характеристики вещественных типов — в файле <float.h> (<cfloat>).

Различные виды целых и вещественных типов, различающиеся диапазоном и

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

Но оптимизированная для компьютеров какого-либо одного типа программа может стать непереносимой на другие платформы, поэтому в общем случае следует избегать зависимостей от конкретных характеристик типов данных.

 




Дата добавления: 2015-04-26; просмотров: 99 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Лексемы| Принципы

lektsii.net - Лекции.Нет - 2014-2025 год. (0.2 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав