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;
答
确定,所以在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被从堆栈中推出/弹出乘法。
您应该阅读[Java的运算符优先级](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)。 – Laf
是的,我读了类似的东西,我可以计算结果,他们是正确的,但我只是想重写这些操作,以简单的作业,保持操作顺序只是为了学习的目的。 – michealAtmi
你有什么是正确的,除了2 * 1不是1. :-) –