您的位置:首页 > 编程语言 > C语言/C++

C语言巧用switch..case..,if ...else ..if..语句执行效率问题:

2020-02-12 22:10 941 查看

C语言巧用switch…case…,if …else …if…语句执行效率问题:

第一种情况:
if ()…if() 与 if()… else if () 的使用场景:

if…else…if的用法,如果是一个变量vale,要获取它的值,它的值有很多可能,就要如下使用:
char vale;
if(vale)
{

}
else if(vale)
{

}
else if(vale)
{

}

而不是如下:
if(vale)
{
;
}
if(vale)
{
;
}
if(vale)
{
;
}

因为if …else…更注重关系的连贯,而if…if…是用于不同的变量,有不同情况.

if…if用法如下:
char a;
char b;
char c;
if(a)
{
;
}
if(b)
{
;
}
if©
{
;
}

第二种情况,switch()…case与if()… else if()效率问题。
正确用法如下,\注释的是之前未优化的效率低的代码。

switch(i)
{
case 0:
//if(i==0)
{
_erase_string( res_scene, res_scene->str_res_val_time_0);
sty_draw_string_res_ext( res_scene->app_scene.handle_gui_dc, res_scene->str_res_val_time_0,buf );

}
break;
//else if(i==1)
case 1:
{
_erase_string(  res_scene, res_scene->str_res_val_time_1);
sty_draw_string_res_ext( res_scene->app_scene.handle_gui_dc, res_scene->str_res_val_time_1,buf );

}
break;
//else if(i==2)
case 2:
{

_erase_string(  res_scene, res_scene->str_res_val_time_2);
sty_draw_string_res_ext( res_scene->app_scene.handle_gui_dc, res_scene->str_res_val_time_2,buf );

}
break;

//else if(i==3)

case 3:
{
_erase_string(  res_scene, res_scene->str_res_val_time_3);
sty_draw_string_res_ext( res_scene->app_scene.handle_gui_dc, res_scene->str_res_val_time_3,buf );

}
break;
}

本人自己在工作中遇到的,每100MS就刷新一次,每次都是一个for循环,前期烧录后都会死机,不知道问题所在,后面优化了代码后才解决问题。如果你写的代码执行频率高,运行内容大,一定要注意效率问题。
如上所说,如果代码中你用来承接一个值的变量,有很多可能,被执行频次高,
最优的用发是用switch(). case 语句,它会去下面的case 子条件中匹配相同数值的条件,匹配到就不会向下执行了,如果都没匹配到,就会执行defalt条件,defalt语句可以不写,代码效率高。
如过你要处理的数据很大很快,就要注意效率问题,不然系统负荷过高,就会造成死机,所以要如下使用。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
jjjxxxhhh123 发布了1 篇原创文章 · 获赞 0 · 访问量 28 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐