可能重复:
How to code a modulo (%) operator in C/C++/Obj-C that handles negative numbersC/C++中的真模运算符?
从我的理解(见Modulo operator with negative values和Modulo operation)C & C++有一个 “剩女” 操作a % b
,但没有操作实际执行模运算时LHS是负面的。
几种语言确实有这样的功能。是否可以在C/C++中构建一个高效的函数(或者在i686/x64 CPU上没有有效的方法)?
目前我使用(n * b + a) % b
,其中n
是挑选的,这样我相当肯定整个LHS是非负的,但不可避免的代码会被改变,有时会发生错误。
注意:如果不清楚,通过模运算,我的意思是一个运算符,例如a + b % b = a % b
为所有整数a
和所有正整数b
。
http://stackoverflow.com/questions/4003232/how-to-code-a-modulo-operator-in-c-c-obj-c-that-handles-negative-numbers – Andrey
你在使用整数吗?否则,我会推荐'std :: fmod'。 – Ruud
整数,是的。主要是作为数组索引。 – dhardy