下列程序的输出结果是( )。 main() { int i=1,j=2,k=3; if(i++= =1&&(++j= =3‖k++ = =3)) printf("%d %d %d\n",i,j,k); }

admin2009-01-15  21

问题 下列程序的输出结果是(    )。    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

答案8

解析 本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”,出现在变量之前(如题中的中++n),表示先使变量的值加1,再使用变量的值进行运算:出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加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。
转载请注明原文地址:https://kaotiyun.com/show/KhXp777K
0

最新回复(0)