$5.6/4 in C++03 states- "If both operands are nonnegative then the remainder is nonnegative;if not, the sign of the remainder is implementation-defined74).
where Note 74 is
According to work underway toward the revision of ISO C, the preferred algorithm for integer division follows the rules defined inthe ISO Fortran standard, ISO/IEC 1539:1991, in which the quotient is always rounded toward zero.
C++0x states -
$5.6/4- "For integral operands the / operator yields the algebraic quotient with any fractional part discarded;79 if the quotient a/b is representable in the type of the result,
(a/b)*b + a%b
is equal to a.
Note 79 says
This is often called truncation towards zero.
So I have two questions:
a) Can someone explain this concept of 'truncation towards zero'?
b) Is modulus with negative operands a defined behavior in C++0x?