Given the code fragment:



int a = -10;
int b = 17;
int c = expression1;
int d = expression2;
c++;
d--;
System.out.print(c + ", " + d);

What could expression1 and expression2 be, respectively, in order to produce output –8, 16?

A.
++a, --b
B.
++a, b--
C.
a++, --b
D.
a++, b--

題解

這題可以先往回推算至第12行執行完畢,最後c = -8 - 1 = -9,d = 16 + 1 = 17。

所以第12行,要直接把b的值指派給d,因此選項A和選項C都不對。第11行,要把a的值加一然後指派給c,因此選項C和選項D都不對。所以答案是選項B。