Поделиться через


imaxdiv

Вычисляет частное и остаток от деления двух целочисленных значений любого размера в рамках одной операции.

Синтаксис

imaxdiv_t imaxdiv(
   intmax_t numer,
   intmax_t denom
);

Параметры

numer
Числитель.

denom
Знаменатель.

Возвращаемое значение

imaxdiv, вызываемая аргументами типа, возвращает структуру типаintmax_timaxdiv_t, которая состоит из кворента и остальной части.

Замечания

Функция imaxdiv производит деление numer на denom, вычисляя таким образом частное и остаток. Структура imaxdiv_t содержит частное (intmax_tquot) и остаток (intmax_trem). Знак квотиента совпадает со знаком математического квотиента. Его абсолютное значение является самым большим целым числом, которое меньше абсолютного значения математического кавыка. Если знаменатель равен 0, выполнение программы прекратится и появится сообщение об ошибке.

Требования

Маршрут Обязательный заголовок
imaxdiv <inttypes.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_imaxdiv.c
// Build using: cl /W3 /Tc crt_imaxdiv.c
// This example takes two integers as command-line
// arguments and calls imaxdiv to divide the first
// argument by the second, then displays the results.

#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>

int main(int argc, char *argv[])
{
   intmax_t x,y;
   imaxdiv_t div_result;

   x = atoll(argv[1]);
   y = atoll(argv[2]);

   printf("The call to imaxdiv(%lld, %lld)\n", x, y);
   div_result = imaxdiv(x, y);
   printf("results in a quotient of %lld, and a remainder of %lld\n\n",
          div_result.quot, div_result.rem);
}

При построении и последующем вызове с параметрами командной строки 9460730470000000 8766 код генерирует следующие выходные данные:

The call to imaxdiv(9460730470000000, 8766)
results in a quotient of 1079252848505, and a remainder of 5170

См. также

Поддержка математических и плавающих точек
div
ldiv, lldiv