为什么模在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
。那么我需要做什么才能获得预期的行为呢?