Java前缀和后缀操作数

时间:2016-03-03 19:23:02

标签: java

我在想什么?如何在下面重写简单的分配以显示操作是如何完成的?

int a = 3;
int b;

b = --a * --a;

Java确实:

  

b =(a = a-1)*(a = a-1)=(2)*(1)= 1;

int a = 3;
int b;

b = a-- * a--;

Java确实:

  

b = a; A = A-1; B = B * A; A = A-1;

     

B = 3; A = 3-1 = 2; B = 3 * 2 = 6; = 2-1 = 1;

2 个答案:

答案 0 :(得分:1)

好吧在java中a--,首先评估a然后它应用操作(在这种情况下是减法),

例如:

a = 3 ; b = a--;

'b'将取'a'的初始值(b = 3),然后'a'将递减(a = 2)。< br />
在以下示例中:

    int a=3;
    int b;
    b= a-- * a--;
    System.out.println("a = " + a);
    System.out.println("b = " + b);

1。 b = a(3)的当前值
2. a = a-1(2)
3. b = b * a的当前值(b = 3 * 2)
4. a = a-1(1)

我们的结果将是:

    b=6 a=1

对于--a,java首先应用操作然后它取值;

例如:

a = 3;
b = - a;

'a'将减少(a = 2 )然后'b'将取'a'的值(b = 2)。

例如:

    int a=3;
    int b;
    b= --a * --a;
    System.out.println("a = " + a);
    System.out.println("b = " + b);

1。 a = a-1(2)
2. b = a(2)的值
3. a = a-1(1)
3. b = b * a的值(b = 2 * 1)
我们的结果将是:

    b=2 a=1
希望这会有所帮助。祝你好运玩得开心:)

答案 1 :(得分:0)

    int a = 3;
    int b = --a * --a;
    System.out.println("pre " + b + "/" + a);

    a = 3;
    int r1 = a-1;   // 2
    a = r1;         // 2
    int r2 = a-1;   // 1
    a = r2;         // 1
    b = r1 * r2;    // 2
    System.out.println("pre2 " + b + "/" + a);


    a = 3;
    b = a-- * a--;
    System.out.println("post" + b + "/" + a);

    a = 3;
    r1 = a;         // 3
    a = r1 - 1;     // 2
    r2 = a;         // 2
    a = r2 - 1;     // 1
    b = r1 * r2;    // 6
    System.out.println("post2 " + b + "/" + a);

从堆栈中推送/弹出r1和r2以进行乘法。