Name

div

Synopsis

Performs integer division, returning quotient and remainder

#include <stdlib.h>
div_tdiv(int dividend, int divisor );
ldiv_t ldiv( long dividend, long divisor );
lldiv_t lldiv( long long dividend, long long divisor );        (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.