问题
单项选择题
以下程序运行后的输出结果是
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
解析: 首先i++==1&&(++j==3||k++==3)是一个逻辑表达式,i++==1&&(++j==3||k++==3)分为两部分:i++==1和(++j==3||k++==3),它们的关系是“且”的关系,所以两部分都会被执行,其中i++==1是先判断i是否等于1(因为++在后面),此时i=1,在执行完后i=2。然后执行第二部分(++j==3…c++==3),又分为两部分:++j==3和k++==3,这两部分是“或”的关系,如果第一部分满足条件就不执行后面的,如果第一部分不满足条件,就执行后面的部分。++j==3是j先自己加1,然后判断j是否等于3,这部分的结果为真,所以后面的部分不再执行,因此最后的结果为i=2 j=3 k=3。