2016-03-03 141 views
0

我想對嗎?如何重寫下面的簡單分配以顯示操作如何完成?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. :-) –

回答

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 

希望這會有所幫助。祝你好運玩得開心:)

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被從堆棧中推出/彈出乘法。