-1

への答えは何でしょう:

class abcd
{
  public static void main(String ar[])
  {
    int a=2, b=3, c;
    c = a++ * --b - b++ + ++a;
    System.out.println(a+" "+b+" "+c);
  }
}

コンパイラは次のように出力しました: 4 3 6. a=4 と b=3 を得ましたが、c を解くことができませんでした。私はc=7で出てきました。

演算子の優先順位が混乱しすぎています。誰か助けてください。:(

4

1 に答える 1

1

オペランドは左から右に評価されるため、コードは次のようになります。

int a = 2, b = 3, c = 0;
int tmp1 = a++; //tmp1 = 2, a = 3
int tmp2 = --b; //tmp2 = 2, b = 2
int tmp3 = b++; //tmp3 = 2, b = 3
int tmp4 = ++a; //tmp4 = 4, a = 4
c = tmp1 * tmp2 - tmp3 + tmp4; // c = 2 * 2 - 2 + 4 = 6

あなたが投稿したリンクに関しては、式を次のように読む必要があるとだけ書かれています。

c = ( ( (a++) * (--b) ) - (b++) + (++a) );
于 2012-07-03T17:29:58.550 に答える