if…else语句嵌套if…ELSE语句和case语句实现分支选择的区别
Posted 离落想AC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if…else语句嵌套if…ELSE语句和case语句实现分支选择的区别相关的知识,希望对你有一定的参考价值。
If…else语句是从上到下判断,当条件满足,则执行语句体;
嵌套if…ELSE语句是当外面的if条件成立才判断里面的if;
Case语句是只需访问对应索引号的表项从而到达定位分支的目的;
if else:
if…else if语句和多个if语句的区别还是很大的,if…else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况;而对于多个if语句,将会对每一个判断条件进行判断,自然而然会导致程序的执行效率降低。在多个判断条件的情况下,使用if…else if语句相对于使用多个if语句而言,可以减少程序的判断次数,提高效率。
语法:
if(条件1)
语句1;
//如果条件1为真,则执行语句1;
else if(条件2)
语句2;
//如果条件1为假且条件2为真,则执行语句2;
else if(条件3)
语句3;
//如果条件12都为假且条件3为真,则执行语句3;
.
.
.
else
语句4;
最终只有一个出口.即当满足条件1时,执行语句1.当不满足条件1时,往下走,判断是否满足条件2,如果还是不满足,则继续往下走,一直走到else语句,说明之前的条件都不满足,最终执行语句4;
嵌套if…ELSE:
我们可以在if语句内嵌套if语句。同样,我们也可以在if语句内嵌套if-else语句,在if-else语句内嵌套if语句,以及在if-else语句内嵌套if-else语句。这种灵活性也很容易让人混淆程序。
语法:
if(条件1)
if(条件2)
语句1;
//如果条件1为真,且条件2为真则执行语句1;
else
语句2;
//如果条件1为真,且条件2为假则执行语句2;
else
语句3
//如果条件1为假则执行语句3;
switch case:
在多个判断条件的情况下,不仅可以使用if…else if语句,还可以使用switch case语句。一般情况下,当判断条件较多的情况下,使用switch case语句的效率会高于使用if…else if语句。switch…case与if…else if的根本区别在于,switch…case会生成一个跳转表来指示实际的case分支的地址,而这个跳 转表的索引号与switch变量的值是相等的。从而,switch…case不用像if…else if那样遍历条件分支直到命中条件,而只需访问对应 索引号的表项从而到达定位分支的目的。所以从效率上来说由于if…else if的遍历性,代码执行效率是不高的。
语法:
switch(表达式)
case 值1:
//表达式的值和 值1匹配上了,需要执行的代码;
break;
case 值2:
//表达式的值和 值2匹配上了,需要执行的代码;
break;
case 值3:
//表达式的值和 值3匹配上了,需要执行的代码;
break;
default:
//如果表达式的值和以上的case后面的值都没有匹配上,那么就执行这里的代码。
break;
从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。
以上是关于if…else语句嵌套if…ELSE语句和case语句实现分支选择的区别的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以减少程序中条件语句if-else或者switch-case的过多嵌套?
为啥我在switch-case语句下嵌套if-else语句会报错?怎么改?
verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗