2

デクリメントを使用するタイミングとポストデクリメントを使用するタイミング

そして、次のコードスニペットのために、私は前または後の減少を使うべきです。

static private void function(int number)
{
    charArr = new char[number];
    int i = 0;
    int tempCounter;
    int j = 0;
    while(charrArr!=someCharArr)
    {
        tempCounter = number - 1;
        password[tempCounter] = element[i%element.Length];
        i++;
        //This is the loop the I want to use the decrementing in.
        //Suppose I have a char array of size 5, the last element of index 5 is updated
        //in the previous statement.
        //About the upcoming indexes 4, 3, 2, 1 and ZERO.
        //How should I implement it?
        // --tempCounter or tempCounter-- ?
        while (charArr[--tempCounter] == element[element.Length - 1])
        {
        }
    }
}


  • あなたのコードに関する限り、私はそれがあるべきだと思いますtempCounter = number;password[tempCounter - 1]そしてcharArr[--tempCounter]という事実にもかかわらず、while-loopは初期化されていない配列に対しても機能します。tempCounter負になることができます。 - sjngm
  • の可能な重複++ iとi ++の違いは何ですか - TylerH

2 답변


4

値が残りの式に渡される前に変数をデクリメントする場合は、事前デクリメントを使用します。一方、ポストデクリメントは、変数がデクリメントされる前に式を評価します。

int i = 100, x;
x = --i;                // both are 99

そして

int i = 100, x;
x = i--;                // x = 100, i = 99

増分についても同じことが明らかに当てはまります。


  • そうcharArr[--tempCounter]からの値が異なりますcharArr[tempCounter--]whileループの状態で。これにより、tempCounter状態を確認する前に。 - sikas
  • @ sikas:2行目がわかりません。どちらのバージョンでも、ループ内で同じ値が使用されます。プリデクリメント/ポストデクリメントは、内で行われていることにのみ影響します。while - 表現。 - sjngm

0

あなたが持っているべきです++i;(それが問題ではない)、そして持っているべきですtempCounter--そうでなければ、charArrの "最初の"インデックスを見逃すでしょう。


  • C#では、iirc、前後のインクリメント/デクリメントで速度に違いはありません。 - Jeff Hubbard
  • 2番目のwhileループからcharArrの値を更新します。last index - 1index = ZERO。だからループの条件で私は使用する必要がありますtempCounter--または--tempCounter? - sikas
  • これは組み込みの時代には当てはまるかもしれませんが、一般的にこれらの演算子を定義するユーザクラスには当てはまりません。--i;速いかもしれませんが、決して遅くなることはありませんi--;。しかし私達は両方とものような行を知っていますi--;特にiがint型の場合、コンパイラによって最適化されます。 - EnabrenTane
  • 私が使うだろうwhile(tempCounter > 0) { charArr[tempCounter--] = /* value */ } - EnabrenTane

リンクされた質問


関連する質問

最近の質問