请教:2013年9月全国计算机等级《二级C语言程序设计》命题预测试卷五第1大题第13小题如何解答?

【题目描述】 下列程序的输出结果是()。 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 <table><tr><td>【我提交的答案】:</td></tr><tr><td>【参考答案与解析】: 正确答案:D</td></tr></table>答案分析: 本题考梦自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或()运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。 判定条件中的运算i++等在判定条件外会真的会改变吗?

时间:2023-12-15 14:15:35

相似题目