% operator with negatives

Marc Brandis brandis at inf.ethz.ch
Fri Dec 14 03:22:52 AEST 1990


In article <7461:Dec1310:04:0990 at kramden.acf.nyu.edu> brnstnd at kramden.acf.nyu.edu (Dan Bernstein) writes:
>In article <1990Dec12.205416.26622 at zoo.toronto.edu> henry at zoo.toronto.edu (Henry Spencer) writes:
>> In article <1990Dec12.185714.7169 at mp.cs.niu.edu> t901908 at mp.cs.niu.edu (Joe Adamo) writes:
>> >I know this may sound silly, but what is the effect of using the 
>> >% (mod) operator with negatives?  I can't seem to find any info on it.
>> If you're asking the obvious question -- "what's the sign of the remainder?",
>> i.e. "which way does the rounding of the quotient go?" -- there is no
>> portable answer.  It's implementation-specific.
>
>And if you're asking ``Where is the information on it?'', the answer is
>that a % b is defined so that (a / b) * b + (a % b) equals a. It's the
>ambiguous definition of / that makes % so useless with negatives.
>
Did somebody ever try it on the VAX? A guy told me once that integer division
rounds toward zero on the VAX while the MOD instruction delivers always a
positive result, which does not fulfill the above equation. Or does the VAX
have a separate REM instruction? At least for Pascal it is completely wrong.


Marc-Michael Brandis
Computer Systems Laboratory, ETH-Zentrum (Swiss Federal Institute of Technology)
CH-8092 Zurich, Switzerland
email: brandis at inf.ethz.ch



More information about the Comp.lang.c mailing list