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(表达式){
     case1:
       //表达式的值和 值1匹配上了,需要执行的代码;
       break;
     case2:
       //表达式的值和 值2匹配上了,需要执行的代码;
     break;
     case3:
       //表达式的值和 值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语句会报错?怎么改?

if语句和case语句 急急急 在线等

verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗

级联和嵌套的判断语句和多路分支

java,多层for()循环,if()else嵌套分别用啥替代?