Использование спецификаторов




Введение

Однако более расширенная классификация типов данных в языке C выделяет адресные, структурированные и простые типы данных. К адресным относятся указатели и ссылки, структурированные делятся на регулярные и нерегулярные, а простые на целые, с плавающей точкой, bool и void.

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

Базовые типы данных. Целочисленный тип данных

Начиная со стандарта C99 в систему типов C было добавлено несколько дополнительных целочисленных типов данных, которые были предназначены для повышения уровня переносимости программ. В свою очередь, базовые целочисленные типы были определены как неудовлетворительные, по причине того, что их размер полностью зависел от реализации. Введение этих типов данных привело к добавлению нового заголовочного файла «inttypes.h», в котором они были определены.

Целочисленные типы данных можно разделить на 5 групп:

· целочисленные типы, имеющие фиксированный размер;

В качестве примера можно привести идентификаторы вида: intN_t, uintN_t, которые интерпретируются как целое размером N бит со знаком и беззнаковое целое размером N бит. Эти типы данных не являются обязательными, тем не менее, если реализация предоставляет целочисленные типы размером 8, 16, 32, 64 бит без какого-то количества бит, дополняющих представление, они должны быть определены соответствующими именами.

Диапазон допустимых значений этого типа данных:

§ Знаковое: -(2N-1).. 2N-1-1;

§ Беззнаковое: 2N-1

· целочисленные типы минимального размера;

К этой группе типов данных относятся типы, определяемые идентификаторами вида: int_leastN_tи uint_leastN_t, которые интерпретируются как целое размером Не менее N бит со знаком и без, соответственно. Иными словами, идентификатор uint_least32_t указывает что такой идентификатор может хранить только беззнаковые целочисленные значения размер которых составляет не менее 32 бит.

Диапазон допустимых значений этого типа данных:

§ Знаковое: -(2N-1-1).. 2N-1-1

§ Беззнаковое: 2N-1

· целочисленные типы минимального размера, имеющие самую высокую скорость обработки;

К этой группе типов данных относятся типов, определяемые идентификаторами int_fastN_t и uint_fastN_t, которые интерпретируются как целое число со знаком размером не менее N-бит, которое имеет самую высокую скорость обработки.

Диапазон допустимых значений этого типа данных:

§ Знаковое: -(2N-1-1).. 2N-1-1

§ Беззнаковое: 2N-1

· целочисленные типы указателей;

Типы данных этой группы описывают знаковые или беззнаковые целочисленные типы, обладающие свойством, которое говорит о том, что любой допустимый указатель на «void » может быть преобразован в этот тип. Обратное утверждение в данном случае верно. То есть, после преобразования указателя к intptr_t (или uintptr_t), может быть произведено обратное преобразование. В результате сравнения исходного значения с преобразованным, они будут эквивалентны.

Диапазон допустимых значений этого типа данных:

§ Знаковое: -(215-1).. 215-1

§ Беззнаковое: 216-1

· целочисленные типы максимального размера.

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

Диапазон допустимых значений этого типа данных:

§ Знаковое: -(263-1).. 263-1

§ Беззнаковое: 264-1

Базовые типы данных. Целочисленный тип данных

Использование спецификаторов

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

Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном — int и long int.

 

При использовании спецификатора signed старший бит числа интерпретируется как знаковый. Если он равен 0, то число интерпретируется как положительное, если 1, как отрицательное. Спецификатор unsigned позволяет представлять только положительные числа, так как старший разряд рассматривается как часть кода числа.

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: