为什么模数在此C代码中无法正常运行?

时间:2015-12-21 16:30:01

标签: c modulo

我有以下代码段:

#include <stdio.h>

int main(){
    printf("%d\r\n", -1 % 7);
    return 0;
}

运行时,会打印-1。根据我自己的数学和计算器这样的(enter image description here),我的答案应该是6.我假设模数的C实现中有一些“陷阱”,我没有理解。有人可以解释为什么我没有得到我期望的答案吗?

1 个答案:

答案 0 :(得分:0)

C的规则(在C99之后)是elif add[0] == 1: 的结果的符号与i%j的符号相同。你得到的答案是正确的。

在C89中,i(如果i%ji为负)的结果取决于实施。 j可以是-1%7-1