0

Диапазоны типов данных в си

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

Процесс проверки и накладывания ограничений на типы используемых данных называется контролем типов или типизацией программных данных . Различают следующие виды типизации:

  • Статическая типизация — контроль типов осуществляется при компиляции.
  • Динамическая типизация — контроль типов осуществляется во время выполнения.

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

Различают простые, составные и прочие типы данных.

Простые данные

Простые данные можно разделить на

  • целочисленные,
  • вещественные,
  • символьные
  • логические.

Составные (сложные) данные

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

Другие типы данных

  • Указатель — хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило — указатель на переменную.

Программа, написанная на языке Си, оперирует с данными различных типов. Все данные имеют имя и тип. Обращение к данным в программе осуществляется по их именам (идентификаторам).

Идентификатор — это последовательность, содержащая не более 32 символов, среди которых могут быть любые буквы латинского алфавита a — z, A — Z, цифры 0 — 9 и знак подчеркивания (_). Первый символ идентификатора не должен быть цифрой.

Несмотря на то, что допускается имя, имеющее до 32 символов, определяющее значение имеют только первые 8 символов. Помимо имени, все данные имеют тип. Указание типа необходимо для того, чтобы было известно, сколько места в оперативной памяти будет занимать данный объект.

Компилятор языка Си придерживается строгого соответствия прописных и строчных букв в именах идентификаторов и лексем.

Верно Неверно
int a = 2, b;
b = a+3;
Int a=2; // правильно int
INT a=2; int a = 2, b;
b = A + 3; // идентификатор А не объявлен int a = 2;
b = a + 3; // идентификатор b не объявлен

Целочисленные данные

Целочисленные данные могут быть представлены в знаковой и беззнаковой форме.

Беззнаковые целые числа представляются в виде последовательности битов в диапазоне от 0 до 2 n -1, где n-количество занимаемых битов.

Знаковые целые числа представляются в диапазоне -2 n-1 …+2 n-1 -1. При этом старший бит данного отводится под знак числа (0 соответствует положительному числу, 1 – отрицательному).

Основные типы и размеры целочисленных данных:

Количество бит Беззнаковый тип Знаковый тип
8 unsigned char
0…255
char
-128…127
16 unsigned short
0…65535
short
-32768…32767
32 unsigned int int
64 unsigned long int long int

Вещественные данные

Вещественный тип предназначен для представления действительных чисел. Вещественные числа представляются в разрядной сетке машины в нормированной форме.

Нормированная форма числа предполагает наличие одной значащей цифры (не 0) до разделения целой и дробной части. Такое представление умножается на основание системы счисления в соответствующей степени. Например, число 12345,678 в нормированной форме можно представить как

12345,678 = 1,2345678·10 4

Число 0,009876 в нормированной форме можно представить как

0,009876 = 9,876·10 -3

Читайте также:  В чем измеряется переменный ток

В двоичной системе счисления значащий разряд, стоящий перед разделителем целой и дробной части, может быть равен только 1. В случае если число нельзя представить в нормированной форме (например, число 0), значащий разряд перед разделителем целой и дробной части равен 0.

Значащие разряды числа, стоящие в нормированной форме после разделителя целой и дробной части, называются мантиссой числа .

В общем случае вещественное число в разрядной сетке вычислительной машины можно представить в виде 4 полей.

  • знак — бит, определяющий знак вещественного числа (0 для положительных чисел, 1 — для отрицательных).
  • степень — определяет степень 2, на которую требуется умножить число в нормированной форме. Поскольку степень 2 для числа в нормированной форме может быть как положительной, так и отрицательной, нулевой степени 2 в представлении вещественного числа соответствует величина сдвига, которая определяется как

2 n -1,

где n — количество разрядов, отводимых для представления степени числа.

  • целое — бит, который для нормированных чисел всегда равен 1, поэтому в некоторых представлениях типов этот бит опущен и принимается равным 1.
  • мантисса — значащие разряды представления числа, стоящие после разделителя целой и дробной части в нормированной форме.
  • Различают три основных типа представления вещественных чисел в языке Си:

    Тип Обозна-
    чение в Си
    Кол-во бит Биты степени Мантисса Сдвиг
    простое float 32 30…23 22…0 127
    двойной точности double 64 62…52 51…0 1023
    двойной расширен- ной точности long double 80 78…64 62…0 16383

    Как видно из таблицы, бит целое у типов float и double отсутствует. При этом диапазон представления вещественного числа состоит из двух диапазонов, расположенных симметрично относительно нуля. Например, диапазон представления чисел типа float можно представить в виде:

    Пример : представить число -178,125 в 32-разрядной сетке (тип float ).

    Для представления числа в двоичной системе счисления преобразуем отдельно целую и дробную части:

    178,12510 = 10110010,0012=1,0110010001·2 111

    Для преобразования в нормированную форму осуществляется сдвиг на 7 разрядов влево).

    Для определения степени числа применяем сдвиг:

    0111111+00000111 = 10000110.

    Таким образом, число -178,125 представится в разрядной сетке как

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

    Символьный тип хранит код символа и используется для отображения символов в различных кодировках. Символьные данные задаются в кодах и по сути представляют собой целочисленные значения. Для хранения кодов символов в языке Си используется тип char .
    Подробнее о кодировке символов

    Логический тип

    Логический тип применяется в логических операциях, используется при алгоритмических проверках условий и в циклах и имеет два значения:

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

    Microsoft C++ 32-разрядных и 64-разрядные компиляторы распознает типы в таблице ниже в этой статье. The Microsoft C++ 32-bit and 64-bit compilers recognize the types in the table later in this article.

    int ( unsigned int ) int ( unsigned int )

    __int8 ( unsigned __int8 ) __int8 ( unsigned __int8 )

    __int16 ( unsigned __int16 ) __int16 ( unsigned __int16 )

    __int32 ( unsigned __int32 ) __int32 ( unsigned __int32 )

    __int64 ( unsigned __int64 ) __int64 ( unsigned __int64 )

    short ( unsigned short ) short ( unsigned short )

    long ( unsigned long ) long ( unsigned long )

    long long ( unsigned long long ) long long ( unsigned long long )

    Читайте также:  Игра в пятнашки алгоритм решения

    Если имя начинается с двух символов подчеркивания ( __ ), тип данных является нестандартным. If its name begins with two underscores ( __ ), a data type is non-standard.

    Диапазоны, представленные в следующей таблице, включают указанные значения. The ranges that are specified in the following table are inclusive-inclusive.

    Имя типа Type Name Байты Bytes Другие имена Other Names Диапазон значений Range of Values
    int int 4 4 signed signed От -2 147 483 648 до 2 147 483 647 -2,147,483,648 to 2,147,483,647
    unsigned int unsigned int 4 4 unsigned unsigned От 0 до 4 294 967 295 0 to 4,294,967,295
    __int8 __int8 1 1 char char От -128 до 127 -128 to 127
    __int8 без знака unsigned __int8 1 1 unsigned char unsigned char От 0 до 255 0 to 255
    __int16 __int16 2 2 короткий, короткое целочисленное, короткое целочисленное число со знаком short, short int, signed short int От -32 768 до 32 767 -32,768 to 32,767
    unsigned __int16 unsigned __int16 2 2 unsigned short, короткое целое число unsigned short, unsigned short int От 0 до 65 535 0 to 65,535
    __int32 __int32 4 4 автоматический, целочисленное число со знаком, int signed, signed int, int От -2 147 483 648 до 2 147 483 647 -2,147,483,648 to 2,147,483,647
    unsigned __int32 unsigned __int32 4 4 без знака, типа int без знака unsigned, unsigned int От 0 до 4 294 967 295 0 to 4,294,967,295
    __int64 __int64 8 8 Long long, со знаком длинное длинное long long, signed long long От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
    unsigned __int64 unsigned __int64 8 8 long long без знака unsigned long long От 0 до 18 446 744 073 709 551 615 0 to 18,446,744,073,709,551,615
    bool bool 1 1 Нет none false или true false or true
    char char 1 1 Нет none -128 до 127 знаков по умолчанию -128 to 127 by default

    При компиляции при помощи /J— от 0 до 255 0 to 255 when compiled by using /J

    char со знаком signed char 1 1 Нет none От -128 до 127 -128 to 127 unsigned char unsigned char 1 1 Нет none От 0 до 255 0 to 255 short short 2 2 короткое целочисленное, короткое целочисленное число со знаком short int, signed short int От -32 768 до 32 767 -32,768 to 32,767 unsigned short unsigned short 2 2 unsigned short int unsigned short int От 0 до 65 535 0 to 65,535 long long 4 4 Long int, длинное целочисленное число со знаком long int, signed long int От -2 147 483 648 до 2 147 483 647 -2,147,483,648 to 2,147,483,647 unsigned long unsigned long 4 4 unsigned long int unsigned long int От 0 до 4 294 967 295 0 to 4,294,967,295 long long long long 8 8 Нет (но эквивалентно __int64) none (but equivalent to __int64) От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 long long без знака unsigned long long 8 8 Нет (но эквивалентно unsigned __int64) none (but equivalent to unsigned __int64) От 0 до 18 446 744 073 709 551 615 0 to 18,446,744,073,709,551,615 enum enum Возможны разные варианты varies Нет none float float 4 4 Нет none 3,4E +/- 38 (7 знаков) 3.4E +/- 38 (7 digits) double double 8 8 Нет none 1,7E +/- 308 (15 знаков) 1.7E +/- 308 (15 digits) long double long double Совпадение с кодом double same as double Нет none Совпадение с кодом double Same as double wchar_t wchar_t 2 2 __wchar_t __wchar_t От 0 до 65 535 0 to 65,535
    Читайте также:  Как включить вай фай тп линк

    Зависимости от того, как она используется, переменная __wchar_t обозначает расширенный символьный или Многобайтовый символьный тип. Depending on how it’s used, a variable of __wchar_t designates either a wide-character type or multibyte-character type. Чтобы указать константу расширенного символьного типа, перед символьной или строковой константой следует использовать префикс L . Use the L prefix before a character or string constant to designate the wide-character-type constant.

    автоматический и без знака называются модификаторы, которые можно использовать с любым целочисленным типом за исключением bool. signed and unsigned are modifiers that you can use with any integral type except bool. Обратите внимание, что char, автоматический char, и unsigned char являются три различных типа для механизмов, подобных перегрузке и шаблонам. Note that char, signed char, and unsigned char are three distinct types for the purposes of mechanisms like overloading and templates.

    Int и unsigned int типы имеют размер 4 байта. The int and unsigned int types have a size of four bytes. Однако переносимый код не должно влиять на размер int так, как языковой стандарт позволяет это может быть от реализации. However, portable code should not depend on the size of int because the language standard allows this to be implementation-specific.

    C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. C/C++ in Visual Studio also supports sized integer types. Дополнительные сведения см. в разделах __int8, __int16, __int32, __int64 и Пределы целых чисел. For more information, see __int8, __int16, __int32, __int64 and Integer Limits.

    Дополнительные сведения об ограничениях, связанных с размером, каждого типа см. в статье Фундаментальные типы. For more information about the restrictions of the sizes of each type, see Fundamental Types.

    Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. The range of enumerated types varies depending on the language context and specified compiler flags. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++. For more information, see C Enumeration Declarations and Enumerations.

    Все о коде и не только

    • Получить ссылку
    • Facebook
    • Twitter
    • Pinterest
    • Электронная почта
    • Другие приложения

    Типы данных в C++

    Составные типы

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

    Данные типа char в памяти компьютера всегда занимают 1 байт. Это связа­но с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения любого из 256 символов клавиатуры.
    Сим­вольный тип может быть со знаком или без знака.
    В величинах со знаком signed char можно хранить значения в диапазоне от -128 до 127. Соответствен­но значения переменных типа unsigned char могут находиться в диапазоне от 0 до 255.

    admin

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *