|
|
В версии С99 добавлен ряд специализированных функций для преобразования формата целочисленных значений, которые позволяют преобразовывать целые значения в так называемые значения максимальной разрядности и наоборот — уменьшать разрядность при необходимости. Эти функции описаны в заголовке <inttypes.h>, который включает также заголовок <stdint.h>. Заголовок <inttypes.h> определяет один тип: структуру imaxdiv_t, в которой хранится значение, возвращаемое функцией imaxdiv(). Функции для преобразования формата целочисленных значений перечислены в табл. 20.3.
В заголовке <inttypes.h> также определено множество макросов, которые можно использовать в вызовах функций семейств printf() и scanf() для задания различных преобразований целых чисел. Макросы для функции printf() начинаются с префикса PRI, а макросы для функции scanf() — с префикса SCN. За этими префиксами стоит спецификатор преобразования, например d или u, затем следует имя типа (например, N, MAX, PTR, FASTN или LEASTN, где N задает разрядность). Точный список поддерживаемых макросов для задания различных преобразований целых чисел должен быть описан в документации к компилятору.
Функция | Описание |
---|---|
intmax_t imaxabs( intmax_t arg); | Возвращает абсолютное значение параметра arg |
imaxdiv_t imaxdiv( intmax_t numerator, intmax_t denominator); | Возвращает структуру imaxdiv_t, которая содержит результат выполнения операции деления числителя numerator на знаменатель denominator. Частное занимает поле quot, а остаток — поле rem. Как поле quot, так и поле rem имеют тип intmax_t |
intmax_t strtoimax( const char * restrict start, char ** restrict end, int base); | Версия функции strtol() для целочисленных параметров максимальной разрядности |
uintmax_t strtoumax( const char * restrict start, char ** restrict end, int base); | Версия функции strtoul() для целочисленных параметров максимальной разрядности |
intmax_t wcstoimax( const char * restrict start, char ** restrict end, int base); | Версия функции wcstol() для целочисленных параметров максимальной разрядности |
uintmax_t wcstoumax( const char * restrict start, char ** restrict end, int base); | Версия функции wcstoul() для целочисленных параметров максимальной разрядности |