问题:
[单选] 下列程序的输出结果是( )。main( )
{int i=1,j=2,k=3;
if(i++= =1&&(++j= =3= =‖k++= =3))
printf("%d%d%d\n",i,J,k);
)
A . 1 2 3
B . 2 3 4
C . 2 2 3
D . 2 3 3
参考答案:D
参考解析:
本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”只要一个值为1,值就为l。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为l;1与任何数都为进行或(1 1)运算,结果都为1,因此k一3的表达式i++是先运算后自加,因此运算时i为 1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。