1

ループの実行が完了した後、最初の配列要素にアクセスしたいと考えています。

1、2、3、4、5 などの数値を格納する配列があります。配列は常にインデックス 0 で初期化されますが、0 番目のインデックスを使用して何も格納していません。

したがって、私が望むのは、 1-2-3-4-5-1のようなリング形式のインデックスを使用することです。モジュラス操作で0-1-2-3-4-0のような 0 番目のインデックスの配列を使用すると、これを実現できます。

代わりに配列インデックスが 1 から始まる場合、どうすればそれを行うことができますか?

4

2 に答える 2

3

1 を引いて、 を実行し%、1 を足し戻すことができます。

a[((i-1)%ARRAY_LEN)+1]

これは、慣例との戦いの問題を示しています。単純な操作の代わりに、減算、 、および%加算が必要です。%C/C++ の慣習と戦うよりも、他の人にとってより効率的で読みやすいものにするために、それを採用するのが最善です。

于 2012-04-23T15:54:22.527 に答える
3

まあ...インデックスを増やすときは、モジュロの代わりにロジックを使用できます。

if (++index >= 6)
  index = 1;
于 2012-04-23T15:54:39.890 に答える