如何在C ++中的两个整数之间执行mod操作?
答案 0 :(得分:15)
在c ++中,使用%operator
答案 1 :(得分:10)
像这样: X = Y%Z
答案 2 :(得分:10)
正如其他答案所述,您可以使用C ++%运算符。但请注意,还没有人提到的皱纹:在表达式a % b
中,如果a
为负,该怎么办?
该操作的结果应该是正面的还是负面的? C ++标准将此归结为
实现。因此,如果你想要便携地处理负输入,你应该
执行r = abs(a) % b
之类的操作,然后修正r
的符号以符合您的要求。
答案 3 :(得分:9)
C ++有%
运算符,偶尔会误导性地命名为“模数”运算符。特别是STL在modulus<>
标题中有<functional>
仿函数。请注意,这不是数学模运算符,因为在模数算术中a mod b
根据定义评估为a
的任何值的非负值和b
的任何正值。在C ++中,a % b
结果的符号是实现定义的,如果其中一个参数为负数。因此,我们会更恰当地将%
运算符命名为余数运算符。
那就是说,如果你真的想要数学模数运算符,那么你可以定义一个函数来做到这一点:
template<typename V>
V mod(const V& a, const V& b)
{
return (a % b + b) % b;
}
只要b
为正值,对上述函数的调用就会产生非负结果。
答案 4 :(得分:2)
使用模数%
运算符:
int modulus_a_b = a % b;
答案 5 :(得分:0)
如果使用双变量,则应使用;
double x;
double y;
double result = fmod(x, y);