前/后递增/递减和操作员订单混淆

Ili*_*uda 2 java operators

我正在进行一些练习,但我对此感到困惑:

public static int f (int x, int y) {
  int b=y--;
  while (b>0) {
    if (x%2!=0)  {
      --x;
      y=y-2; 
    }
    else { 
      x=x/2;
      b=b-x-1; 
    }
  }
  return x+y; 
} 
Run Code Online (Sandbox Code Playgroud)

目的是b=y--什么?因此,例如,x=5并且y=5 当我们第一次进去的,而环(while (b>0))将b= 4或5?当我运行时,我的计算机中的代码b是5.而返回的是3.我真的不清楚.对不起,如果我的问题不清楚.

Seb*_*ian 5

int b=y--;首先是assignes b=y然后减少 y(y--).

另请查看前缀/后缀一元增量运算符.

此示例(取自链接页面)演示了:

class PrePostDemo {
    public static void main(String[] args){
        int i = 3;
        i++;
        // prints 4
        System.out.println(i);
        ++i;               
        // prints 5
        System.out.println(i);
        // prints 6
        System.out.println(++i);
        // prints 6
        System.out.println(i++);
        // prints 7
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在分配b后将y递减1. (3认同)