我在想什么?如何在下面重写简单的分配以显示操作是如何完成的?
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;
答案 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以进行乘法。