【问题标题】:Java prefix and postfix operandsJava 前缀和后缀操作数
【发布时间】:2016-06-17 07:26:20
【问题描述】:

我想对了吗?如何将下面的内容重写为简单的分配以显示操作是如何完成的?

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's operator precedence
  • 是的,我读过类似的东西,我可以计算结果并且它们是正确的,但我只想将这些操作重写为简单的分配,保持操作顺序仅用于学习目的。
  • 你所拥有的都是对的,只是 2 * 1 不是 1。:-)
  • @michaelAtmi 您的简化代码是正确的。问题解决了吗?
  • b=3;a=3-1=2;b=3*2=6;a=2-1=1;应该是 a=3;a=3-1=2;b=3*2=6;a=2-1=1;对吧??

标签: java


【解决方案1】:

好的,所以在 java 中 a--,首先计算 a,然后应用运算(在本例中为减法),

例如:

   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=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

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

【讨论】:

    【解决方案2】:
        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 从堆栈中压入/弹出以进行乘法运算。

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多