c如何计算余数?

How c calculates remainder?

我的一个函数有奇怪的行为。 程序代码非常庞大,难以阅读。所以我附加了部分功能。 如果j小于4,则returns不是实际余数,而是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++;
}

问题是 % 运算符是如何工作的。

以下建议代码:

  1. 干净地编译
  2. 显示模运算符按预期工作

现在,建议的代码:

#include <stdio.h>

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

当 compiled/linked 和 运行 结果是:

3

以上显示模运算符按预期工作。

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