问题
单项选择题
有以下程序: 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=||k++=3)"时,表达式"i++=1"的值为真,其值为1,表达式"++j=3"的值为真,根据短路原理,右边的表达式"k++=3"不再进行运算,括号中表达的值为1,作与运算后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的值分别为为2,3,3。