如何在不使用操作符的情况下,在C中将模运算符实现为函数?
进行整数除法,然后乘以一个数,最后减去结果。
#include <stdio.h>
int main()
{
int c=8, m=3, result=c-(c/m*m);
printf("%d\n", result);
}
这是您要的内容:
a % b = a - (b * int(a/b))
(int)(a/b)
来实现整数除法。而使用类型函数表示法int(a/b)
则是C++特有的写法。 - Jonathan Lefflerfmod(-5,4)==fmodf(-5,4)==(-5%4)==-1
。你说的是 ((a%b)+b)%b)
。 - kritzikratzi您可以通过反复从x
中减去y
并跟踪结果来模拟x % y
。在每次迭代中,如果结果小于y
,则您就有了余数,可以直接返回它。
简单来说:
如果商
a/b
可以表示,则表达式(a/b)*b + a%b
应等于a
(C99标准,6.5.5/6)。
(a/b)*b
),它变成了一个确定a%b
的公式? - cafa = 15
并且 b = 8
,则会正确得到 7
。如果 a = -15
并且 b = 8
,则会得到 1
。两个都应该是 7
。 - Hatefiend(a/b)*b
总是等于 a
。 - Aaron Franke被除数 / 除数 = 商
以下是 Python 3 中的公式:
模数 = 被除数 - 被除数 // 除数 * 除数
例如,如果被除数为 5,除数为 2,则
模数 = 5 - 5 // 2 * 2,即 5 - 2 * 2 5 - 4 1 请记住,// 的优先级高于 -,因此首先计算 5 // 2。
-21
mod20
的结果为-1
,但实际应该是19
。这仅适用于正数。 - Rogue