c如何计算余数?

时间:2019-01-31 14:37:28

标签: c discrete-mathematics modular-arithmetic

我的其中一项功能有奇怪的行为。 程序代码非常庞大且难以阅读。所以我附上了部分功能。 如果j小于4,则返回的不是实际余数,而是j与4之间的差。

我测试发现3 % 4 == 1而不是3。

while (j < 16)
{
    if ((crd + (j % 4)) + d * (j / 4) > d * d && str2[j] == 1)
        str[0] = 2;
    if (((crd + (j % 4) + d * (j / 4)) / d) - i != (j / 4) && str2[j] == 1)
        str[0] = 2;
    if (str2[j] == 1)
        str[(crd + (j % 4)) + d * (j / 4)] = str2[16];
    if (str[(crd + (j % 4)) + d * (j / 4)] == 2 || str[0] == 2)
        return (str);
    j++;
}

问题是%运算符的工作方式。 screenshot of debugger

1 个答案:

答案 0 :(得分:1)

以下建议的代码:

  1. 干净地编译
  2. 表明模运算符可以按预期工作

现在,建议的代码:

#include <stdio.h>

int main( void )
{
    int a = 3 % 4;
    printf( "%d\n", a );
}

编译/链接并运行时的结果是:

3

上面显示的是模运算符按预期工作。

剩下您的代码,而不是[mcve],因此产生的可能性是您的代码有问题。但是我们确实无法确定,因为我们没有您的代码,