53084

[code]

    package chapter04;
    
    public class IncDec {
    
        public static void main(String[] args) {
            int a = 10, b = 10, c = 0, d = 0;
    
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d);
    
            c = a--;
            d = ++b;
            System.out.println("\nc = a--; d = ++b;");
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d);
    
            c = --a;
            d = b++;
            System.out.println("\nc = --a; d = b++;");
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d);
    
            d = ++a - b--;
            System.out.println("\nd = ++a - b--;");
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d);
    
            a--;
            ++b;
            System.out.println("\na--; ++b;");
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d);
        }
    
    }
    
[/code]

＜出力＞

[code]

    a:10 b:10 c:0 d:0
    
    c = a--; d = ++b;
    a:9 b:11 c:10 d:11
    
    c = --a; d = b++;
    a:8 b:12 c:8 d:11
    
    d = ++a - b--;
    a:9 b:11 c:8 d:-3
    
    a--; ++b;
    a:8 b:12 c:8 d:-3
    
[/code]


CC BY-SA 4.0
2019-02-28T03:45:25.597
53083
2019-02-28T05:41:21.947
2019-02-28T03:47:09.623
29826
32344
question
java
どうして、この出力になるのか教えてください。


出力の各行について説明します。

[code]

    a:10 b:10 c:0 d:0
    
[/code]

初期状態です。

[code]

    c = a--; d = ++b;
    a:9 b:11 c:10 d:11
    
[/code]

cにaの後置デクリメント、dにbの前置インクリメントを代入しています。後置では代入してから評価、前置では評価してから代入が行われるため、
`cにaを代入して（c=10）からaをデクリメント（a=9）`、`bをインクリメントして（b=11）からdに代入`しています。

[code]

    c = --a; d = b++;
    a:8 b:12 c:8 d:11
    
[/code]

同様に、cにaの前置デクリメント、dにbの後置インクリメントを代入しています。

[code]

    d = ++a - b--;
    a:9 b:11 c:8 d:-3
    
[/code]

これはパターンが変わり、dに（aの前置インクリメントからbの後置デクリメントを引いたもの）を代入しています。評価の順番は「aがインクリメントされ（aが9になる）、dにa-
bが代入され（dが9-12=-3になる）、bがデクリメントされる（bが11になる）」という流れになります。

[code]

    a--; ++b;
    a:8 b:12 c:8 d:-3
    
[/code]

aが後置デクリメント、bが前置インクリメントされます。代入はありませんが、aが8、bが12になっています。

前置と後置についてはこの記事が参考になるかと存じます。  
[前置と後置 - 演算子 - Java入門](https://www.javadrive.jp/start/ope/index7.html)


CC BY-SA 4.0
2019-02-28T03:54:24.260
53084
2019-02-28T05:41:21.947
2019-02-28T05:41:21.947
29826
29826
53083
answer