単体が理解できるなら、単体に分解してみてはいかがでしょう?
int a = 10;
int b = a++;
b = b + a;
b = b + a--;
b = b - a--;
b = b + ++a;
System.out.println(b);
Like!
Java Silver SE8 黒本 p.55(解答p.73)に記載の以下の問題についての質問です。
(問題文)
次のプログラムをコンパイル、実行したときの結果として正しいのは。
public class Main {
public static void main(String[] args){
int a = 10;
int b = a++ + a + a-- - a-- + ++a;
System.out.println(b);
}
}
(解答)
32が表示される
a++
++a
など単体?では理解できているつもりなのですが、
int b = a++ + a + a-- - a-- + ++a;
このように式となったと途端理解ができず、
解説を読んでも理解できずにいます。
前置インクリメント、後置インクリメントも
それぞれの意味はなるほどとなりますが、
上記の式となると分からなくなってしまいます。
理解力がないのが原因なのですが、、
砕いて説明していただける方がいましたら
コメントをいただけますと幸いです。
よろしくお願いいたします。
単体が理解できるなら、単体に分解してみてはいかがでしょう?
int a = 10;
int b = a++;
b = b + a;
b = b + a--;
b = b - a--;
b = b + ++a;
System.out.println(b);
@question2022
Questioner補足しますと、後置インクリメントのint a = 10; a = a++ + a;
は次の項に移る前にインクリメントする代入が行われます。ので以下と同等です。
int a = 10;
a = 10 + 11;
なので単体作戦が使えます。
ちなみにJava Silver SE8ってこんなクソ文法が出てくるのか...と戦々恐々としました。知ってるかと思いますが、実務でしたら同じ変数のインクリメントが1つの式に2つ以上出ることはまず無いでしょう、安心してください。
@question2022
Questioner