我有以下代码段:
#include <stdio.h>
int main(){
printf("%d\r\n", -1 % 7);
return 0;
}
运行时,会打印-1
。根据我自己的数学和计算器这样的(),我的答案应该是6.我假设模数的C实现中有一些“陷阱”,我没有理解。有人可以解释为什么我没有得到我期望的答案吗?
答案 0 :(得分:0)
C的规则(在C99之后)是elif add[0] == 1:
的结果的符号与i%j
的符号相同。你得到的答案是正确的。
在C89中,i
(如果i%j
或i
为负)的结果取决于实施。 j
可以是-1%7
或-1
。