C语言巧用switch..case..,if ...else ..if..语句执行效率问题:
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语句可以不写,代码效率高。
如过你要处理的数据很大很快,就要注意效率问题,不然系统负荷过高,就会造成死机,所以要如下使用。
- 点赞
- 收藏
- 分享
- 文章举报
- if...else与switch...case的执行效率问题
- 为什么switch...case语句比if...else执行效率高
- if...else if...和switch...case...执行效率
- 关于if(){}else(){} 和 switch() case的执行效率
- C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)
- C语言选择语句的使用---if()-else和switch--case
- C语言之if...else PK switch...case
- switch...case 和 if...else效率比较和优化
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- switch与ifelse的效率问题
- 求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
- JavaScript中switch...case语句与if...else性能比较
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- C语言控制语句总结(if else for switch while break continue)
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
- 《剑指offer》上的一道原题,求1+2+……+n,要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句
- switch...case和if...else效率比较
- switch...case 和 if...else效率比较和优化
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case和条件语句