TL; DR:どのようにしてCでモジュラスを得ることができますか?
int remainder = -1 % 5; //-1
int modulus = -1 modulus 5; //4 How do I do this?
私は、配列の変調された値を読み取るしようとしています。したがって、配列の長さで変調されたインデックスは、更新されたインデックスになります。例:
array = {100, 200, 300, 400, 500}
array[6] = array[6 mod 5] = array[1] = 200
十分に簡単です。しかし、私の指数がマイナスの場合、それが問題になるのです。
array[-1] = array[???] = array[4] = 500
私は-1 mod 5を実行する方法がわかりません。残りの演算子はポジティブではありますが、ネガティブではありません。ここで
は、正の値だけのために働く私のサンプルコードです:
static void Main(string[] args)
{
int[] myArray = new int[5] { 100, 200, 300, 400, 500 };
int myIndex = myArray.Length - 1;
for (int i = 0; i < 15; i++)
{
myIndex = --myIndex % myArray.Length;
Console.WriteLine("Value: " + myArray[myIndex]);
}
Console.WriteLine("Done");
}
は、どのように私は数ではなく、C#で、残りの係数を得ることができますか?私はあなたが達成したいと思います
実際には、剰余演算子*は、ネガティブに作用します。-1を5で除算した余りは-1であり、単に-1/5が0であるため、 '-1'は' 0 * 5'と '-1'の違いです。問題は、この演算子が提供するもの以外の何かをしたいということです。 –
最も単純な方法は、2つの剰余計算を行うことです: 'a%b' - >'((a%b)+ b)%b'。 –
[リンクされた回答](https://stackoverflow.com/a/1082938/580951)を参照してください。 – Romoku