如何在不使用运算符的情况下在C中实现模运算符?在C中实现模运算符作为函数C
回答
简单:
如果商
a/b
可表示,表达(a/b)*b + a%b
应等于a
(C99标准,6.5.5/6)。
做一个整数除法,然后乘以,然后减去。
#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))
这个转换符号只适用于C++(不是C,问题会提到这个问题),而且如果a和b是整数,那么它就是多余的。但是downvote来自其他地方。 – 2010-04-18 07:08:03
@JonathanLeffler,能否请你解释一下这在C中是行不通的。 – user674669 2012-10-07 16:42:43
@ user674669:在C语言中,你必须编写'(int)(a/b)'。类型函数符号“int(a/b)”特定于C++。 – 2012-10-07 16:45:44
您可以通过重复地从x
减去y
和跟踪结果的模拟x % y
。在每次迭代中,如果结果小于y
,那么你有余数,并且可以返回它。
如果计算机没有乘法/除法功能,这可能会很慢但很有用。 – user674669 2012-10-07 16:41:40
这不是真正的软件实现是如何工作的。一个真正的软件实现会使第二个操作数翻倍,直到另一个操作数增加一倍,减去第二个操作数,然后开始将第二个操作数除以二并减去。 – EJP 2016-08-22 10:07:36
股息/除数=商数
式(在Python 3)低于:
Modolus =红利 - 分红//除数*除数
例如,如果股息= 5,和除数= 2,则
模量= 5 - 5 // 2 * 2成为 5 - 2 * 2 5 - 4 记住//的H比 - 更高的优先级,所以5 // 2首先是 。
- 1. C++:实现模幂运算
- 2. 在C中实现sizeof运算符
- 3. 模数运算符在C#
- 4. 为什么在C中的printf函数不是模运算符?
- 5. C#运算符模数?
- 6. c模数运算符
- 7. C壳模数运算符
- 8. 在C中实现/实施环绕算术运算C
- 9. 运算符不解析为运算符函数C++
- 10. 在C++中调用+ =运算符函数中的运算符+函数
- 11. 在C#中实现函数
- 12. 在C++中使用对数实现运算符重载
- 13. 模板类中的C++赋值运算符实现
- 14. 实现JS的算术运算符在node.js中C++插件
- 15. C#在函数上重载++运算符
- 16. 将运算符作为参数传递给函数C
- 17. C/C++中的真模运算符?
- 18. 三元运算符作为C宏中三元运算符的操作数
- 19. 在C++模板中使用运算符
- 20. 在C++中实现运算符在类头之外的超载
- 21. 比较运算符`operator``作为成员函数或外部函数的实现
- 22. 重载运算符[]为模板类C++
- 23. :c/C++中的运算符
- 24. C++与&&运算符函数返回
- 25. OOP C++,虚函数和新运算符
- 26. 如何使用C在bash中实现逻辑运算符?
- 27. 在C++中实现shell的bash运算符
- 28. 如何在C中实现typeof运算符
- 29. 使用按位运算符在C++中恢复分区实现
- 30. 是否有三元运算符在c#中运行函数?
这并不直接回答这个问题,它仅仅是%运算符的公理定义(因此不是真正的“简单”)。我想知道这个票数。 – Clifford 2010-04-18 08:17:15
@Clifford:可能是因为有了明显的转换(从两边减去'(a/b)* b')它就成为确定'a%b'的公式了吗? – caf 2010-04-18 08:49:53
@ caf:也许,但“简单”本来是为了呈现“明显的”转变,而不是假设读者拥有(虽然是基本的)数学技能。 OP的数学能力未知;假设它很明显可能看起来像炫耀。 – Clifford 2010-04-18 15:24:23