问题详情

有以下程序: main() { int i=1,j=2,k=3; if(i++==l&&(++j==3||k++==3)) printf("%d%d%d ",i,j,k): } 程序运行后的输出结果是( )。


A、1 2 3

B、2 3 4

C、2 2 3

D、2 3 3

时间:2022-01-01 06:27 关键词:

答案解析

D
解析:本题的考点是关于C语言的逻辑表达式的计算规则。对于逻辑表达式“i++==1&&(++j==3||k++==3)”,首先判断“i++==1”,由于i初值为1,“i++==1”为真,同时i加1值为2。由于第一项为真,对于“&&”运算符,结果取决于后一项“(++j==3||k++==3)”。而逻辑表达式“(++j==3||k++==3)”计算时,首先判断“++j==3”,由于j初值为2,++j后j值为3,“++j==3”为真,对于“||”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k++==3”并没有进行判断,k++也未执行,k仍是初值3,输出结果应该是2 3 3。正确选项是D。