我有一个if语句,来判断一个变量在不同大小范围下执行不同操作,感觉if语句逐条判断效率低,能不能,改成switch语句?要怎么改呢?
if(bit_counter<9)
{
bit_set(&DCC_addr,9-bit_counter,data);
}
if(bit_counter>9&&bit_counter<18)
{
bit_set(&D1,18-bit_counter,data);}
if(bit_counter==18&&data==1)
{
DCC_byte_size=2;
dcc_cmd_refresh_flag=1;
data_flag=0;
bit_counter=0;
}
if(bit_counter>18&&bit_counter<27)
{bit_set(&D2,27-bit_counter,data);}
if(bit_counter==27&&data==1)
{
DCC_byte_size=3;
dcc_cmd_refresh_flag=1;
data_flag=0;
bit_counter=0;
// HAL_UART_Transmit_IT(&huart1,&D2,1);
}
if(bit_counter>27&&bit_counter<36)
{bit_set(&D3,36-bit_counter,data);}
if(bit_counter==36&&data==1)
{
DCC_byte_size=4;
dcc_cmd_refresh_flag=1;
data_flag=0;
bit_counter=0;
}
if(bit_counter>36&&bit_counter<45)
{bit_set(&D4,45-bit_counter,data);}
if(bit_counter==45&&data==1)
{
DCC_byte_size=5;
dcc_cmd_refresh_flag=1;
data_flag=0;
bit_counter=0;
}
if(bit_counter>45&&bit_counter<54)
{bit_set(&D5,54-bit_counter,data);}
if(bit_counter==54&&data==1)
{
DCC_byte_size=6;
dcc_cmd_refresh_flag=1;
data_flag=0;
bit_counter=0;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不是说switch效率就一定比if-else高的。
如果要硬改成switch,你需要设计出一个数学上的分段常值函数,把变量的不同取值范围映射成一个或多个数值,这样才能应用switch。
例如把百分制成绩转化为ABCDE,就可以把百分制成绩用整数除法除以10,case 10 case 9是A ,case 8是B,case 7 是C,case 6是D,case 5 case 4 case 3 case 2 case 1 case 0是E。
一周热门 更多>