1

これは非常に基本的な質問ですが、.

背後にある概念を理解しています。n++、++n、n--、--n。でも

public static void main(String[] args){

    int count = 1;
    for(int i =1;i<=10;++i){

    count = count * i;
    System.out.print(count);
    }
}

したがって、1 2 3 4 5 6 7 8 9 10 と出力されます。

私の質問はです。i が ++i ではないとしてインクリメントされると、1 ではなく 2 として扱われるのはなぜですか。別の操作によって操作される前に i をインクリメントするには、++i のポイントを挿入します。

4

7 に答える 7

11

++i のポイントは、別の操作によって操作される前に i をインクリメントすることですか?

との違いは、より大きな式の一部として使用される場合++ii++のみ重要です。

int j = ++i; // Increment then use the new value for the assignment
int k = i++; // Increment, but use the old value for the assignment

この場合、操作はループの各反復の最後に単独で発生します。したがって、ループは次と同等です。

int count = 1;
// Introduce a new scope for i, just like the for loop does
{
    // Declaration and initialization
    int i = 1;
    // Condition
    while (i <= 10) {
        count = count * i;
        System.out.print(count);

        // Now comes the final expression in the for loop "header"
        ++i;
    }
}

最後に に変更++ii++ても、まったく違いはありません。式の値は何にも使用されません。

于 2012-06-14T14:30:40.970 に答える
3

forインクリメントは、ループの最初の繰り返しが終わるまで呼び出されません。

それは本当ですが

j = i++;
k = ++i;

は異なる結果を返します。このコンテキストでの は、すべてのループ++iの最後に呼び出されるスタンドアロンの行と考えてください。for

于 2012-06-14T14:30:11.443 に答える
0

i = 0 および While i < 1= 10 の場合、i を出力してから、i を事前にインクリメントします。(ここでは ++i/i++ に違いはありません)。

ただし、これを試してください:

int i=1;  
while(i <= 10)  
  System.out.print(++i);  


i = 1;  
while (i <= 10)  
  System.out.print(i++);

于 2012-06-14T14:39:17.910 に答える
0

ポストインクリメントである i++ を使用したい。++i はプレインクリメントと呼ばれ、違いはまさにあなたが指摘したとおりです。

于 2012-06-14T14:30:17.847 に答える
0

他の回答への追加として、優先する歴史的な理由はfor(int i=1;i<=10;++i)、古い値を追加の変数に保存する必要for(int i=1;i<=10;i++)++iないことです。iしたがって、++iは より高速ですi++が、速度の向上はごくわずかです。最新のコンパイラでは、この速度の向上は最適化として行われるため、2 つの部分は同じコンパイラ出力を生成します。ただし、++iは常に と同じか、より高速であるため (たとえば、古い C++ コンパイラでは) i++、多くの経験豊富なプログラムは常に++iループ内で を使用します。

他の回答が述べているように、両方のコードは機能的に同等です (for ループの場合)。

于 2012-06-14T15:40:26.683 に答える
0

この場合++i、ループの最後に発生し、インクリメントしてから、新しい値が終了条件を満たしているかどうかを確認します。

また、出力は次のようになりませんか。

count   i  
1   *   1 = 1
1   *   2 = 2  
2   *   3 = 6   
6   *   4 = 24  

于 2012-06-14T14:31:03.050 に答える
0

あなたが書いたforループは次と同じです:

i = 1;
while(i<=10) {
  count = count * i;
  System.out.print(count);
  i = i + 1;
}

だから!

于 2012-06-14T14:31:53.290 に答える