【问题标题】:Why is modulo not functioning correctly in this C code? [duplicate]为什么模在此 C 代码中无法正常工作? [复制]
【发布时间】:2016-03-27 19:08:33
【问题描述】:

我有以下代码sn-p:

#include <stdio.h>

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

运行时,它会打印-1。根据我自己的数学和计算器(http://www.miniwebtool.com/modulo-calculator/?number1=-1&number2=7),我的答案应该是 6。我假设在模的 C 实现中存在一些我没有掌握的“陷阱”。有人可以解释为什么我没有得到预期的答案吗?

【问题讨论】:

标签: c modulo


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 2017-09-05
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    相关资源
    最近更新 更多