关于取模运算
c++primer 里面说, 如果只有一个操作数为 负数,除法和取模的值取决于机器
比如 21%(-5)// 结果为 1 or -4 比如 21 / 5 ; // 结果为 -4 or -5
但是,后面又说,求模操作结果值的符号可以依据分子(被除数)或者分母(除数)的符号而定。 如果求模的结果随分子的符号,则结果向零取整,如果求模的结果随分母的符号,则结果向负无穷取整。
那到底是取决于机器,还是依据分子或者分母的符号呢????
[解决办法]
取决于编译器的实现,如果分子分母符号不同,假定分子为正,如果编译器按照分子的符号来处理,那么结果为正
,如果编译器按照分母的符号来处理,那么结果为负
[解决办法]
既取决于机器,又依据分子分母符号。两者并不矛盾。
取决于机器是指得到余数的符号正负。取决于分子分母指的则是在机器已经确定符号的情况下绝对值如何取整。
[解决办法]
反正c++标准是没有规定符号怎么决定。
/and %
If both operands are nonnegative then the remainder is nonnegative;
if not, the sign of the remainder is implementation-defined74).
我记得深入理解计算机系统上是有说明的。