问题 单项选择题

有以下程序:#include <stdio.h>main( ){ int i=1,j =2,k =3; if(i ++ == 1&&( ++j ==3 ‖ k ++ ==3) ) printf( "% d % d % d \n" , i, j, k ); } 程序运行后的输出结果是( )。

A.123

B.234

C.223

D.233

答案

参考答案:D

解析: 判断i++==1&&(++j==3||k++==3)时,先执行i++==1,由于i++是先运算,后自加,这时i的值为1,所以表达式i++==1的值为真,其值为i;然后执行++j==3,由于++j是先自加,后运算,这时j的值为3,所以表达式++j==3的值为真,不再计算右边表达式k++==3,括号中表达式的值为1,“&&”运算后整个表达式的值也为1,输出i,j,k时,由于k没有进行过运算,所以输出结果为2,3,3。

判断题
填空题