Ada余数运算符的差异?

Ana*_*tic 1 ada operators

所以,我知道小梅提供了两个余数运营商,remmod,但究竟什么是它们之间的区别?我能够找到这个,但我不确定我是否完全掌握了这一点.

ajb*_*ajb 5

两者之间没有区别A mod B,A rem Bif A是非负的并且B是正面的.如果A是负数并且B是正数,则为mod您提供真正的数学模运算; 因此,例如,如果B为5,这里有结果A mod 5A rem 5为值A:

A       = -10 -9 -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8
A mod 5 =   0  1  2  3  4  0  1  2  3  4  0  1  2  3  4  0  1  2  3 
A rem 5 =   0 -4 -3 -2 -1  0 -4 -3 -2 -1  0  1  2  3  4  0  1  2  3
Run Code Online (Sandbox Code Playgroud)

注意A mod 5结果中的模式. rem对应于%操作符在C风格语言中的工作方式(但显然不是Python或Ruby).某些处理器可能会更快.如果你必须处理负值A,我的预感mod更有可能是有用的,但也可能有一些用途rem.我认为根本不使用modrem使用负右侧操作数,所以我不会过多担心定义.

另见http://en.wikipedia.org/wiki/Modulo_operation.