Bryan Olson wrote: > Dotan Cohen wrote: ... >> Second, in Turbo C -111%10=-1 however in python -111%10=9. Is one or >> the other in error? > > Turbo C is correct here with respect to the C standard. Python > is correct with respect to the Python Reference Manual. > > They also disagree about integer division. C rounds toward zero; > Python rounds downward. > > In C: -111 / 10 evaluates to -11 > In Python: -111 / 10 evaluates to -12
C, which was designed as a "high level assembly language," does not tightly define the results of / and % for negative numbers. Instead it defines the result for positive over positive, and constrains the result for the others. The reason is simple: most CPUs available at the time provided a single operation that produced both the quotient and the remainder, but some produced -1 for -3 / 2, and others produced 1 for -3 / 2. Either result is justifiable, but the most common use of division and remainder is positive / positive, and it would be a shame to generate a test for every division and modulus just to cover the negative / positive case. You would be slowing down the majority of code to satisfy the (usually non-existant) corner case. -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list