问答题 试分析条件语句“(P1&0x10)>0&&y++<=5”功能与测试过程。
【正确答案】程序如下:
   while( (Pl&0x10)>0&&y++<=5)
   {x=P1;}
【答案解析】[程序分析]
   在本例中,表达式所列出的测试条件是由两个分测试条件相“与”构成的。第一个分测试条件是“(P1&0x10H)>0”,其作用是对P1口的第五引脚(P1.4)进行测试。如果它等于1,则条件为真(1),否则为假(0)。在本句中使用“>”,而不是“=10H”来进行测试较为安全。因为使用“=10H”进行测试(P1&10H),会将屏蔽数值和相等测试混淆,从而潜伏某种隐患。
   第二个分测试条件是“y++<=5”,其含义是当y<5时条件为真(1),否则为假(0)。“y++<5”中先测试y<5,然后再执行y自加1的运算。
   把上面两个分测试条件相“与”,while循环的功能是:只有当P1.4电平为高,并持续一段时间(由“y++<=5”来控制)时,执行花括号{)中语句“x=P1;”,否则退出此while循环体,执行下一条语句。
   注意:
   (1)在while循环体内若有多条语句,应使用花括号{}括起来,表示这是一个语句块。当循环体内只有一条语句时,可以不使用花括号,但此时使用花括号将使程序更加安全可靠;特别是在进行while循环的多重嵌套时,使用花括号来分隔循环体将提高程序的可读性和可靠性。
   (2)在while循环体中,应有使循环趋向于结束的语句。在本例中,当P1.4=0或y>5时,while循环体结束。若无此种语句,则循环将无休止地继续下去。