stdint.h

Поделись знанием:
Перейти к: навигация, поиск
Стандартная библиотека
языка программирования С

stdint.h — заголовочный файл стандартной библиотеки языка Си, введённый стандартом C99. Заголовочный файл объявляет несколько целочисленных типов и макросов.[1]



Типы

Заголовочный файл объявляет целочисленные типы, которые имеют заданный размер, имеют заданный минимальный размер и которые являются наиболее быстрыми при использовании.[1] В дополнение к ним стандарт объявляет макросы, устанавливающие размер этих типов. Платформа должна поддерживать, как минимум, ряд целочисленных типов заданных размеров:

Тип Разрядность Набор значений
int_least8_t как минимум, 8 бит [-127;127]
int_least16_t как минимум, 16 бит [- 32767; 32767]
int_least32_t как минимум, 32 бита [- 2147483647; 2147483647]
int_least64_t как минимум, 64 бита [- (2^63 - 1); 2^63 - 1]
uint_least8_t как минимум, 8 бит [0; 255]
uint_least16_t как минимум, 16 бит [0; 65535]
uint_least32_t как минимум, 32 бита [0; 4294967295]
uint_least64_t как минимум, 64 бит [0; 2^64 - 1]
int_fast8_t как минимум, 8 бит [-127; 127]
int_fast16_t как минимум, 16 бит [- 32767; 32767]
int_fast32_t как минимум, 32 бита [- 2147483647; 2147483647]
int_fast64_t как минимум, 64 бита [- (2^63 - 1); 2^63 - 1]
uint_fast8_t как минимум, 8 бит [0; 255]
uint_fast16_t как минимум, 16 бит [0; 65535]
uint_fast32_t как минимум, 32 бита [0; 4294967295]
uint_fast64_t как минимум, 64 бит [0; 2^64 - 1]

Типы с точной шириной.

Не все системы могут поддерживать все эти типы.

Тип Описание
int8_t 8-битовый со знаком
int16_t 16-битовый со знаком
int32_t 32-битовый со знаком
int64_t 64-битовый со знаком
uint8_t 8-битовый без знака
uint16_t 16-битовый без знака
uint32_t 32-битовый без знака
uint64_t 64-битовый без знака

Заданные типы имеют ширину в точности 8, 16, 32 и 64 бита соответственно.[1] Приставка u означает, что этот тип является беззнаковым и содержит целые числа, как минимум, от нуля до <math>2^N - 1</math> включительно. Таким образом, тип uint_least8_t должен существовать и содержать числа от нуля до 255 включительно.

Платформа может поддерживать указатели на знаковые и беззнаковые целочисленные типы: intptr_t и uintptr_t.[1] Платформа обязана в рамках стандарта С99 поддерживать следующие типы: intmax_t, uintmax_t, которые могут представлять максимальные целочисленные значения.

Макросы

Заголовочный файл объявляет наборы макросов, которые содержат минимальные и максимальные значения целочисленных типов.[1] Чтобы получить имя, представляющие минимальное или максимальное значение данного типа, возьмите имя типа, замените _t на _MAX или _MIN и переведите все символы в верхний регистр. Например, наименьшим значением для типа int32_t является INT32_MIN, а наибольшим значением для типа uint_fast16_t - UINT_FAST16_MAX.

Макрос Значение
INTN_MIN <math>-(2^{N-1})</math>
INTN_MAX <math>2^{N-1}-1</math>
UINTN_MAX <math>2^N-1</math>
INT_LEASTN_MIN <math>-(2^{N-1}-1)</math>
INT_LEASTN_MAX <math>2^{N-1}-1</math>
UINT_LEASTN_MAX <math>2^N-1</math>
INT_FASTN_MIN <math>-(2^{N-1}-1)</math>
INT_FASTN_MAX <math>2^{N-1}-1</math>
UINT_FASTN_MAX <math>2^N-1</math>
INT_PTR_MIN <math>-(2^{15}-1)</math>
INT_PTR_MAX <math>2^{15}-1</math>
UINTPTR_MAX <math>2^{16}-1</math>
INTMAX_MIN <math>-(2^{63}-1)</math>
INTMAX_MAX <math>2^{63}-1</math>
UINTMAX_MAX <math>2^{64}-1</math>
PTRDIFF_MIN <math>-65535</math>
PTRDIFF_MAX <math>+65535</math>
SIZE_MAX[2] <math>65535</math>

Стандарт также определяет размер типов sig_atomic_t, который может содержать значения либо [-127; 127], либо [0; 255]. Для типа wchar_t установлены такие же ограничения, только они являются минимальными. Тип wint_t, если определён, должен содержать, как минимум, либо значения [-32767; 32767], либо [0; 65535].

Макросы INTN_C(value), INTMAX_C(value), UINTMAX_C(value) должны раскрываться в целочисленные константные выражения со значением value и с размерностью INT_LEASTN_T, intmax_t и uintmax_t соответственно. К примеру, на 64-разрядной машине выражение UINT64_C(123) должно преобразоваться в константу 123ULL.[1]

Напишите отзыв о статье "Stdint.h"

Примечания

  1. 1 2 3 4 5 6 [www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf ISO/IEC 9899:1999]
  2. Размер типа size_t

Отрывок, характеризующий Stdint.h

Пьер был как пьяный. Восторженное состояние его еще усилилось при виде девочки, которую он спас.
– Ce qu'elle dit? – проговорил он. – Elle m'apporte ma fille que je viens de sauver des flammes, – проговорил он. – Adieu! [Чего ей нужно? Она несет дочь мою, которую я спас из огня. Прощай!] – и он, сам не зная, как вырвалась у него эта бесцельная ложь, решительным, торжественным шагом пошел между французами.
Разъезд французов был один из тех, которые были посланы по распоряжению Дюронеля по разным улицам Москвы для пресечения мародерства и в особенности для поимки поджигателей, которые, по общему, в тот день проявившемуся, мнению у французов высших чинов, были причиною пожаров. Объехав несколько улиц, разъезд забрал еще человек пять подозрительных русских, одного лавочника, двух семинаристов, мужика и дворового человека и нескольких мародеров. Но из всех подозрительных людей подозрительнее всех казался Пьер. Когда их всех привели на ночлег в большой дом на Зубовском валу, в котором была учреждена гауптвахта, то Пьера под строгим караулом поместили отдельно.


В Петербурге в это время в высших кругах, с большим жаром чем когда нибудь, шла сложная борьба партий Румянцева, французов, Марии Феодоровны, цесаревича и других, заглушаемая, как всегда, трубением придворных трутней. Но спокойная, роскошная, озабоченная только призраками, отражениями жизни, петербургская жизнь шла по старому; и из за хода этой жизни надо было делать большие усилия, чтобы сознавать опасность и то трудное положение, в котором находился русский народ. Те же были выходы, балы, тот же французский театр, те же интересы дворов, те же интересы службы и интриги. Только в самых высших кругах делались усилия для того, чтобы напоминать трудность настоящего положения. Рассказывалось шепотом о том, как противоположно одна другой поступили, в столь трудных обстоятельствах, обе императрицы. Императрица Мария Феодоровна, озабоченная благосостоянием подведомственных ей богоугодных и воспитательных учреждений, сделала распоряжение об отправке всех институтов в Казань, и вещи этих заведений уже были уложены. Императрица же Елизавета Алексеевна на вопрос о том, какие ей угодно сделать распоряжения, с свойственным ей русским патриотизмом изволила ответить, что о государственных учреждениях она не может делать распоряжений, так как это касается государя; о том же, что лично зависит от нее, она изволила сказать, что она последняя выедет из Петербурга.
У Анны Павловны 26 го августа, в самый день Бородинского сражения, был вечер, цветком которого должно было быть чтение письма преосвященного, написанного при посылке государю образа преподобного угодника Сергия. Письмо это почиталось образцом патриотического духовного красноречия. Прочесть его должен был сам князь Василий, славившийся своим искусством чтения. (Он же читывал и у императрицы.) Искусство чтения считалось в том, чтобы громко, певуче, между отчаянным завыванием и нежным ропотом переливать слова, совершенно независимо от их значения, так что совершенно случайно на одно слово попадало завывание, на другие – ропот. Чтение это, как и все вечера Анны Павловны, имело политическое значение. На этом вечере должно было быть несколько важных лиц, которых надо было устыдить за их поездки во французский театр и воодушевить к патриотическому настроению. Уже довольно много собралось народа, но Анна Павловна еще не видела в гостиной всех тех, кого нужно было, и потому, не приступая еще к чтению, заводила общие разговоры.
Новостью дня в этот день в Петербурге была болезнь графини Безуховой. Графиня несколько дней тому назад неожиданно заболела, пропустила несколько собраний, которых она была украшением, и слышно было, что она никого не принимает и что вместо знаменитых петербургских докторов, обыкновенно лечивших ее, она вверилась какому то итальянскому доктору, лечившему ее каким то новым и необыкновенным способом.