1.并列关系,可以用两种方法
if(0xF0 ==rx_buf[0]&&0xF0 ==rx_buf[1]&&0xF0 ==rx_buf[2]&&0xF0 ==rx_buf[3]&&0xF0 ==rx_buf[4]&&0xF0 ==rx_buf[5])
{
About();
}
(1). 拆分成几个if,还是太长,用第二种方法
{
if(0xF0 ==(rx_buf[0]&0xFF) && 0xF0 == (rx_buf[1] &0xFF) )
if(0xF0 ==(rx_buf[2]&0xFF) && 0xF0 == (rx_buf[3] &0xFF) )
{
About();
}
}
(2). 条件不成立时跳过后面的判断
{
if(0xF0 !=(rx_buf[0]&0xFF)
return;
if(0xF0 !=(rx_buf[1]&0xFF)
return;
if(0xF0 !=(rx_buf[2]&0xFF)
return;
if(0xF0 !=(rx_buf[3]&0xFF)
return;
About();
}
2.或关系,可以用两种方法
(1). 拆分成几个if,也可以把上面方法(2)按照这样写。
int ReceiveUI()
{
u8 b=0;
if(!IF_SLUI_DIS)
{
if(IF_DMXIN_OK)
{
SET_SLUI_DIS;
b=1;
}
}
if(GetBits(DMX_WL_ui,BIT2))
{
b=1;
}
if(b)
{
Event_CLR(EVENT_LEVE_DISP);
ClrBits(WL_ui,BIT2);
gSelected=0;
submenu_Set(menu4_SET.Select_arrow,0);
}
return b;
}
(2). 使用goto,和上面同样的效果,这样被封印的goto又被用起来了
void fun()
{
if(SYSDATA_HEADER_DATA!=sysdata_header)
goto SYSInit;
if(0xAA!=sysdata.header)
goto SYSInit;
if(Check_ROM_date() )
goto SYSInit;
if(0==sysdata.cct||0xFFFF==sysdata.cct)
goto SYSInit;
return;
SYSInit:
sysdata_header=SYSDATA_HEADER_DATA;
itemInfo_Reboot();
sysdata_save();
return;
}