为什么模在C代码中不能正常工作?

为什么模在C代码中不能正常工作?,c,modulo,C,Modulo,我有以下代码片段: #include <stdio.h> int main(){ printf("%d\r\n", -1 % 7); return 0; } #包括 int main(){ printf(“%d\r\n”,-1%7); 返回0; } 运行时,它会打印-1。根据我自己的数学和计算器,比如这个(),我的答案应该是6。我假设在模的C实现中有一些我没有掌握的“gotcha”。有人能解释为什么我没有得到我期望的答案吗?C的规则(在C99之后)是I%j的结果

我有以下代码片段:

#include <stdio.h>

int main(){
    printf("%d\r\n", -1 % 7);
    return 0;
}
#包括
int main(){
printf(“%d\r\n”,-1%7);
返回0;
}
运行时,它会打印
-1
。根据我自己的数学和计算器,比如这个(),我的答案应该是6。我假设在模的C实现中有一些我没有掌握的“gotcha”。有人能解释为什么我没有得到我期望的答案吗?

C的规则(在C99之后)是
I%j
的结果的符号与
I
的符号相同。你得到的答案是正确的


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

阅读FWW:
-1%7
在JavaScript中也返回
-1
,但在Python中它确实返回
6
。那么我需要做什么才能获得预期的行为呢?