如何在不使用运算符的情况下在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#
- 3. c模数运算符
- 4. C壳模数运算符
- 5. 在C中实现/实施环绕算术运算C
- 6. 运算符不解析为运算符函数C++
- 7. 在C++中调用+ =运算符函数中的运算符+函数
- 8. 在C++中使用对数实现运算符重载
- 9. 模板类中的C++赋值运算符实现
- 10. 三元运算符作为C宏中三元运算符的操作数
- 11. 在C++模板中使用运算符
- 12. OOP C++,虚函数和新运算符
- 13. 如何在C中实现typeof运算符
- 14. 如何使用C在bash中实现逻辑运算符?
- 15. 在C++表达式模板中实现Matlab的冒号:运算符类
- 16. 实现|| =和&& =操作符:运算符实现没有匹配运算符声明
- 17. C#模运算
- 18. 运算符()为下标(C++)
- 19. C++运算符 ''
- 20. 运算符[] [] C++
- 21. 在C++中实现Matlab的fmincon函数
- 22. 如何在objective-c中实现/计算这个函数?
- 23. 运算符作为C#中的方法参数
- 24. C++运算符和参数
- 25. C编程!算术运算符操作
- 26. C++函数映射实现
- 27. C++虚函数的实现?
- 28. 交换实现函数c
- 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