Next: , Previous: Integers, Up: Arithmetic

### 20.2 Integer Division

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)

This function `div` computes the quotient and remainder from the division of numerator by denominator, 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)

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)

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)

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.