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.
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.
This function
div
computes the quotient and remainder from the division of numerator by denominator, returning the result in a structure of typediv_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
andresult.rem
is2
.
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 typelong int
rather thanint
.)
The
ldiv
function is similar todiv
, except that the arguments are of typelong int
and the result is returned as a structure of typeldiv_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 typelong long int
rather thanint
.)
The
lldiv
function is like thediv
function, but the arguments are of typelong long int
and the result is returned as a structure of typelldiv_t
.The
lldiv
function was added in ISO C99.
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 typeintmax_t
rather thanint
.)See Integers for a description of the
intmax_t
type.
The
imaxdiv
function is like thediv
function, but the arguments are of typeintmax_t
and the result is returned as a structure of typeimaxdiv_t
.See Integers for a description of the
intmax_t
type.The
imaxdiv
function was added in ISO C99.