Содержание | <<< | >>>

Функции для преобразования формата целочисленных значений

В версии С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() для целочисленных параметров максимальной разрядности

Содержание | <<< | >>>