This section describes functions for performing integer division. These
functions are redundant when GNU CC is used, because in GNU C the
‘`/`’ operator always rounds towards zero. But in other C
implementations, ‘`/`’ may round differently with negative arguments.
`div`

and `ldiv`

are useful because they specify how to round
the quotient: towards zero. The remainder has the same sign as the
numerator.

These functions are specified to return a result `r` such that the value
`r``.quot*`

`denominator`` + `

`r``.rem`

equals
`numerator`.

To use these facilities, you should include the header file
`stdlib.h` in your program.

— Data Type: **div_t**

This is a structure type used to hold the result returned by the

`div`

function. It has the following members:

`int quot`

- The quotient from the division.
`int rem`

- The remainder from the division.

— Function: div_t **div** (`int numerator, int denominator`)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

This function

`div`

computes the quotient and remainder from the division ofnumeratorbydenominator, returning the result in a structure of type`div_t`

.If the result cannot be represented (as in a division by zero), the behavior is undefined.

Here is an example, albeit not a very useful one.

div_t result; result = div (20, -6);Now

`result.quot`

is`-3`

and`result.rem`

is`2`

.

— Data Type: **ldiv_t**

This is a structure type used to hold the result returned by the

`ldiv`

function. It has the following members:

`long int quot`

- The quotient from the division.
`long int rem`

- The remainder from the division.
(This is identical to

`div_t`

except that the components are of type`long int`

rather than`int`

.)

— Function: ldiv_t **ldiv** (`long int numerator, long int denominator`)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

The

`ldiv`

function is similar to`div`

, except that the arguments are of type`long int`

and the result is returned as a structure of type`ldiv_t`

.

— Data Type: **lldiv_t**

This is a structure type used to hold the result returned by the

`lldiv`

function. It has the following members:

`long long int quot`

- The quotient from the division.
`long long int rem`

- The remainder from the division.
(This is identical to

`div_t`

except that the components are of type`long long int`

rather than`int`

.)

— Function: lldiv_t **lldiv** (`long long int numerator, long long int denominator`)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

The

`lldiv`

function is like the`div`

function, but the arguments are of type`long long int`

and the result is returned as a structure of type`lldiv_t`

.The

`lldiv`

function was added in ISO C99.

— Data Type: **imaxdiv_t**

This is a structure type used to hold the result returned by the

`imaxdiv`

function. It has the following members:

`intmax_t quot`

- The quotient from the division.
`intmax_t rem`

- The remainder from the division.
(This is identical to

`div_t`

except that the components are of type`intmax_t`

rather than`int`

.)See Integers for a description of the

`intmax_t`

type.

— Function: imaxdiv_t **imaxdiv** (`intmax_t numerator, intmax_t denominator`)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

The

`imaxdiv`

function is like the`div`

function, but the arguments are of type`intmax_t`

and the result is returned as a structure of type`imaxdiv_t`

.See Integers for a description of the

`intmax_t`

type.The

`imaxdiv`

function was added in ISO C99.