Функции для преобразования формата целочисленных значений
Содержание
В версии С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 задает разрядность). Точный список поддерживаемых макросов для задания различных преобразований целых чисел должен быть описан в документации к компилятору.
Таблица 20.3. Функции для преобразования целочисленных значений в формат с максимальной разрядностью и функции, выполняющие обратные преобразования
Функция | Описание
|
---|
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() для целочисленных параметров максимальной разрядности
|
|
|
|
|
|
|