我似乎记得ANSI C没有指定当模运算符的操作数为负时应该返回什么值(只是它应该是一致的).它是否稍后被指定,或者是否总是被指定并且我记得不正确?
我正在学习 Perl (5.14) 并且我有点坚持使用负数取模。例如,让我们看一下 10%3 的变体。
开始,
perl -le 'print -10%-3'
Run Code Online (Sandbox Code Playgroud)
产量-1,正如预期的那样。
但,
perl -le 'print -10%3'
Run Code Online (Sandbox Code Playgroud)
产量2。
和,
perl -le 'print 10%-3'
Run Code Online (Sandbox Code Playgroud)
产量-2。
我不明白最后两个结果。对于 10%3 的任何变化,我预计只有 1 或 -1。为什么结果应该返回 2,无论是正数还是负数?