##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# div, ldiv, lldiv

From cppreference.com
< c‎ | numeric‎ | math

Defined in header `<stdlib.h>` |  |
div_t div( int x, int y ); |  |
ldiv_t ldiv( long x, long y ); |  |
lldiv_t lldiv( long long x, long long y ); |  | (since C99)
Defined in header `<inttypes.h>` |  |
imaxdiv_t imaxdiv( intmax_t x, intmax_t y ); |  | (since C99)

Computes the quotient (the result of the expression x/y) and remainder (the result of the expression x%y) simultaneously. (since C99)

Computes quotient and remainder simultaneously. The quotient is the algebraic quotient with any fractional part discarded (truncated towards zero). The remainder is such that quot * y + rem == x. (until c99)

### [edit] Notes

Until C99, the rounding direction of the quotient and the sign of the remainder in the built-in division and remainder operators was implementation-defined if either of the operands was negative, but it was well-defined in div and ldiv.

### [edit] Parameters

x, y | - | integer values

### [edit] Return value

Structure of type `div_t`, `ldiv_t`, `ldiv_t`, `imaxdiv_t` defined as:

    struct div_t {
        int quot;   // The quotient
        int rem;    // The remainder
    };

    struct ldiv_t {
        long quot;   // The quotient
        long rem;    // The remainder
    };

    struct lldiv_t {
        long long quot;   // The quotient
        long long rem;    // The remainder
    };

    struct imaxdiv_t {
        std::intmax_t quot;   // The quotient
        std::intmax_t rem;    // The remainder
    };

### [edit] Example

Run this code

    #include <stdio.h>        /* printf */
    #include <stdlib.h>       /* div    */

    int main () {

        div_t rslt;

        rslt=div(+23,+5); printf("div(+23,+5) = %2d,%2d\n", rslt.quot,rslt.rem);
        rslt=div(-23,+5); printf("div(-23,+5) = %2d,%2d\n", rslt.quot,rslt.rem);
        rslt=div(+23,-5); printf("div(+23,-5) = %2d,%2d\n", rslt.quot,rslt.rem);
        rslt=div(-23,-5); printf("div(-23,-5) = %2d,%2d\n", rslt.quot,rslt.rem);

        return 0;
    }

Output:

    div(+23,+5) =  4, 3
    div(-23,+5) = -4,-3
    div(+23,-5) = -4, 3
    div(-23,-5) =  4,-3

### [edit] See also

fmod | remainder of the floating point division operation (function) [edit]
C++ documentation for div

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/numeric/math/div&oldid=67213"