Java前缀和后缀操作数

问题描述:

我想对吗?如何重写下面的简单分配以显示操作如何完成?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; a = 2-1 = 1;

+0

您应该阅读[Java的运算符优先级](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)。 – Laf

+0

是的,我读了类似的东西,我可以计算结果,他们是正确的,但我只是想重写这些操作,以简单的作业,保持操作顺序只是为了学习的目的。 – michealAtmi

+2

你有什么是正确的,除了2 * 1不是1. :-) –

确定,所以在Java中A--,首先计算一个然后它适用的操作(在这种情况下减法),

例如:

     一个= 3;
      b = a--;

'b'将采用'a'(b = 3)的初始值,然后'a'将递减(a = 2)。

在下面的例子:

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

1 B =的(3)
2. A = A-1(2)
3. B = B *电流的值的电流值( 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 =的(2)
3. A = A-1(1)
3. b值为= A和b *值(b = 2 * 1)
而我们的结果将是:

b=2 a=1 

希望这会有所帮助。祝你好运玩得开心:)

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被从堆栈中推出/弹出乘法。