问题 单项选择题

下列程序的输出结果为( )。
public class Test
public static void main (String[] args)
int i,j,k,a=3,b=2;
i=(--a==b++) --a:++b;
j=a++;
k=b;
System. out. println("i="+i+" ,j =" +j+",k ="+k);

A.i=2, j=1, k=3

B.i=1, j=1, k=2

C.i=4, j=2, k=4

D.i=1, j=1, k=3

答案

参考答案:D

解析: 本题的关键是要弄清条件表达式的执行步骤和自增(或自减)运算的求值过程。
程序的执行过程如下:
①首先求出关系表达式--a==b++的值为“真”。注意:--a是先使当前的a值(为3)减1后才参加关系运算;而b++则是先使当前的b值(为2)参加关系运算后再增1。
②由于关系表达式的结果为“真”,因此进行--a运算。由于a的当前值已为2,所以运算结果的值是1(注意:这时对++b不进行运算),即整个条件表达式的值为1,从而得到i=1。这时a和b的值分别为1和3。
③执行j=a++和k=b后,将分别得到:j=1(把a的当前值1赋给j后,a再增1),k=3。

实验题
选择题