繁体   English   中英

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

[英]How do I do modulus in C++?

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

在c ++中,使用%operator

更多帮助

正如其他答案所述,您可以使用C ++%运算符。 但请注意,还没有人提到过的皱纹:在表达式a % b ,如果a是负数怎么办? 该操作的结果应该是正面的还是负面的? C ++标准将此归结为实现。 因此,如果您想要便携地处理负输入,您应该执行类似r = abs(a) % b ,然后修复r的符号以符合您的要求。

像这样:x = y%z

C ++有%运算符,偶尔会误导性地命名为“模数”运算符。 特别是STL在<functional>头中具有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是正值,对上述函数的调用将产生非负结果。

使用模数%运算符:

int modulus_a_b = a % b;

如果你使用双变量,你应该使用;

double x;
double y;
double result = fmod(x, y);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM