2016-07-11 6 views
1

を数える:の違いは考慮して

int[] aryNums=new int[5]; 

for (int i=0; i<=5; i++) 
{ 
    aryNums[i] = i++; 
    System.out.println(aryNums[i]); 
} 

は、なぜこれが1、2、3、4、5のように私の配列の値を与えるものではありませんか? 代わりに、0,0やエラーのような例外が発生します。

は、また、私は

aryNums[i] = i++; \to 

aryNums[i] = i+1; 

を変更した場合、私は、配列内の値{1,2,3,4,5}を得ます。ここでi ++とi + 1の違いは何ですか?

答えて

2

最初のものでは、ループ内のiとループ更新の一部が増えています。 2番目の方法では、を呼び出してiに格納されている値に影響を与えることなく、新しい整数を作成するだけです。

発現i++iに格納された値に影響を与えることなく、新しい値を返すi+1発現は、iに格納された値を更新します。

7

++は、 'i'の値を1だけ変更する演算子です。i = i + 1という略記です。

i + 1は、通常どおりに返す追加ステートメントですが、iが再割り当てされていないため、iの値は変更されません。

i++あなたはインクリメントした後、それを使用したい場合、あなたは(そして、インクリメントを使用)++iを使用する必要があるだろう一方で、それをインクリメントする前にiを使用していますので、あなたがエラーを取得している理由です。 i++もカウンタをインクリメントしているため、一部の値はスキップされます。

+0

に削除しますそれは前と後の増分演算子の違いを説明するので、最初のものに非常に重要な補足です。 – nasukkin

3

a = i++;a = i; i = i + 1;

int[] aryNums=new int[5]; //array index starts from 0, so last index is "4" 

for (int i=0; i<=5; i++) // 0, 1, 2, 3, 4, "5" -> out of bounds 
{ 
    aryNums[i]=i++; //i++ -> first put the i to arrNums[i], "then" increase i 
    System.out.println(aryNums[i]); 
} 

ソリューションに等しい:

  • =変更aryNums[i]=i++
  • i <= 5から三番目の段落があるaryNums[i] = i + 1
関連する問題