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++;
}
问题是 %
运算符是如何工作的。
以下建议代码:
- 干净地编译
- 显示模运算符按预期工作
现在,建议的代码:
#include <stdio.h>
int main( void )
{
int a = 3 % 4;
printf( "%d\n", a );
}
当 compiled/linked 和 运行 结果是:
3
以上显示模运算符按预期工作。
剩下的就是您的代码,它不是 [mcve],因此由此产生的可能性是您的代码有问题。但我们真的无法确定,因为我们没有您的代码,
我的一个函数有奇怪的行为。
程序代码非常庞大,难以阅读。所以我附加了部分功能。
如果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++;
}
问题是 %
运算符是如何工作的。
以下建议代码:
- 干净地编译
- 显示模运算符按预期工作
现在,建议的代码:
#include <stdio.h>
int main( void )
{
int a = 3 % 4;
printf( "%d\n", a );
}
当 compiled/linked 和 运行 结果是:
3
以上显示模运算符按预期工作。
剩下的就是您的代码,它不是 [mcve],因此由此产生的可能性是您的代码有问题。但我们真的无法确定,因为我们没有您的代码,