我如何在C ++中使用模数?

时间:2010-04-05 22:39:10

标签: c++ integer modulo

如何在C ++中的两个整数之间执行mod操作?

6 个答案:

答案 0 :(得分:15)

在c ++中,使用%operator

More Help

答案 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);