Name
div
Synopsis
Performs integer division, returning quotient and remainder
#include <stdlib.h> div_tdiv
(intdividend
, intdivisor
); ldiv_tldiv
( longdividend
, longdivisor
); lldiv_tlldiv
( long longdividend
, long longdivisor
); (C99)
The div()
functions divide
an integer dividend
by an integer
divisor
, and return the integer part of
the quotient along with the remainder in a structure of two integer
members named quot
and rem
. div()
obtains the quotient and remainder
in a single machine operation, replacing both the /
and %
operations. The header file stdlib.h defines this structure for the
various integer types as follows:
typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; typedef struct { long long int quot; long long int rem; } lldiv_t;
Example
int people, apples;
div_t share;
for ( apples = -3 ; apples < 6 ; apples += 3 )
{
if ( apples == 0 )
continue; // Don't bother dividing up nothing.
for ( people = -2 ; people < 4 ; people += 2 )
{
if ( people == 0 )
continue; // Don't try to divide by zero.
share =div
( apples, people );
printf( "If there are %+i of us and %+i apples, "
"each of us gets %+i, with %+i left over.\n",
people, apples, share.quot, share.rem );
}
}
As the output of the preceding code illustrates, any nonzero remainder has the same sign as the dividend:
If there are -2 of us and -3 apples, each of us gets +1, with -1 left over. If there are +2 of us and -3 apples, each of us gets -1, with -1 left over. If there ...
Get C in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.