javaの学習をしている初学者になります。
下記コードをネットで見つけたのですが、
String[]ars= {"a","b","c"}; int i=1; int d; for(String s: ars) { d=i++; System.out.println(i); }
int num = 0; for(int a = 0; a < 5 ; a++){ num = num++; System.out.println(num); }
出力結果が下記になります。
2
3
4
1
1
1
1
1
なぜこのように上のコードと下のコードでは出力結果が違うでしょうか?
ご教授いただけると幸いです。
そのようなコードだから…でしょう。
後置インクリメントというワードが出ているのでしたら、問う必要は無いのではないでしょうか。
下の段のコードですが、本当に1が5個連続して出ましたか?
1ではなく、0のはずなのですが。
ただ、num = num++ とは一般に書くようなコードではないです。何かの試験でしょうか?
C>type Main2.java
class Main2 {
public static void main(String[] args) {
int num = 0;
for(int a = 0; a < 5 ; a++){
num = num++;
System.out.println(num);
}
}
}
C>java --source 8 Main2.java
0
0
0
0
0
> なぜこのように上のコードと下のコードでは出力結果が違うでしょうか?
あと、ただ「拾ってきたコードですが、初心者なので分かりません。教えてください。」は止めましょう。1から10まで聞こうとするのではなく、何らかの考察があるべきだと思います。
[質問するときのヒント] https://teratail.com/help/question-tips
ありがとうございました。
「上のコードはこうこうこういう処理が行われることでこの変数がこうなるからこういう結果になる、
下のコードはこうこうこういう処理が行われることで変数がこうなるからこういう結果になると想像しているがそうなっていない」みたいな記述があるといいと思います。
そういった記述があれば、回答しようとしている人は質問者さんは〇〇は理解しているが、××に関しては勘違いしているということがわかり、「いやいや実はそうじゃないんです、ここではこういう処理が行われるからこういう結果になるんです」といった回答が得られやすいかと思います。
できれば「ということは、〇〇ではなく××のような処理が行われているのかも」という推察ができると、
じゃあこういう場合ならどうなるだろうと自分で試して、つまりこれはこういう処理なんだと理解できることがあります。そうなると、ここでわざわざ聞くまでもなくなりますね。
dodox86さんが指摘されているように、拾ってきたコード理解できんから教えて では
「少しは自分で考えろよ(試して試行錯誤しろよ)」「理解できないのは学習不足なのだからしっかりと学習すべき」って私は感じますね。