Subject: modulus operator in c
To: None <current-users@NetBSD.ORG>
From: Andrew Brown <codewarrior@daemon.org>
List: current-users
Date: 01/22/1997 12:30:51
just a simple query, not necessarily related to netbsd although it
might be interesting to find out...

does anyone out there who compiles and runs this program

   #include <stdio.h>
   int main(void)
   {
     int dividend,divisor,quotient,remainder;
     dividend=-3;
     divisor=-2;
     quotient=dividend/divisor;
     remainder=dividend%divisor;
     printf("%d %d %d %d\n",dividend,divisor,quotient,remainder);
   }

not get

   -3 -2 1 -1

as output?  any system at all, any os at all...i'm trying to find something
somewhere that does not.  the reason stems from the k&r book's definition
on what the quotient and remainder will be from integer arithmetic.  see
section A7.6, paragraph 4:

    "....  If both operands are non-negative, then the remainder is non-
  negative and smaller than the divisor; if not, it is guaranteed only
  that the absolute value of the remainder is smaller than the absolute
  value of the divisor."

if anyone finds such a machine, please let me know...?

-- 
|-----< "CODE WARRIOR" >-----|
andrew@echonyc.com (TheMan)        * "ah!  i see you have the internet
codewarrior@daemon.org                               that goes *ping*!"
warfare@graffiti.com      * "information is power -- share the wealth."