4

Java で配列要素を宣言、初期化、アクセスする方法を学びながら、次の簡単なコードを書きました。

class ArrayAccess{

    public static void main(String args[]){
        int[] a;
        a = new int[4];
        a[0] = 23;
        a[1] = a[0]*2;
        a[2] = a[0]++;
        a[3]++;
        int i = 0;
        while(i < a.length){
            System.out.println(a[i]);
            i++;

        }
    }
}

しかし、予期しない出力が得られます。

私が得ている出力は次のとおりです。

24     

46

23

1

そう、

の値としてでは24なく、なぜですか?これがatのインクリメントによるものである場合、なぜの要素はあり、ないのですか。 23a[0]a[0]a[2]a[1]4648

の値としてでは23なく、なぜですか?24a[2]

4

4 に答える 4

9

a[2] = a[0]++;値を a[2] にコピーした後、a[0] をインクリメントします。

以下と同じです:

a[2] = a[0];
a[0]+=1;

割り当ての前に値を増やしたい場合は、a[2] = ++(a[0]);

これは次と同じです:

a[0]+=1;
a[2] = a[0];
于 2013-05-29T15:40:53.090 に答える
4
a[2] = a[0]++; 

  int temp = a[0];
  a[2] = a[0];
  a[0] = temp + 1;
于 2013-05-29T15:41:20.340 に答える
3

次の行のため:

a[2] = a[0]++;

インクリメント (++) には、右側の値をインクリメントするという副作用があります。それ以外の場合は、次を使用する必要があります。

a[2] = a[0]+1;

もう 1 つの例は、++number の同様の概念です。あなたが書いた場合:

a[2] = ++a[0];

a[0] がインクリメントされ、次に a[2] に追加されます。したがって、a[2] では次のようになります: 24

于 2013-05-29T15:42:21.363 に答える