• 第6课 分支语句


    if语句:

     

    switch语句分析:

    case 语句中的值只能是整形或者字符型,并且只能是常量。

    if和switch使用示例:

     1 #include <stdio.h>
     2 
     3 void f1(int i)
     4 {
     5     if( i < 6 )
     6     {
     7         printf("Failed!
    ");
     8     }
     9     else if( (6 <= i) && (i <= 8) )
    10     {
    11         printf("Good!
    ");
    12     }
    13     else
    14     {
    15         printf("Perfect!
    ");
    16     }
    17 }
    18 
    19 void f2(char i)
    20 {
    21     switch(i)
    22     {
    23         case 'c':
    24             printf("Compile
    ");
    25             break;
    26         
    27         case 'd':
    28             printf("Debug
    ");
    29             break;
    30         
    31         case 'o':
    32             printf("Object
    ");
    33             break;
    34             
    35         case 'r':
    36             printf("Run
    ");
    37             break;
    38         
    39         default:
    40             printf("Unknown
    ");
    41             break;
    42             
    43     }
    44 }
    45 
    46 int main()
    47 {
    48     f1(5);
    49     f1(9);
    50     f1(7);
    51     
    52     f2('o');
    53     f2('d');
    54     f2('e');
    55 
    56     return 0;
    57 }

    else语句只与它相邻最近的if匹配。例如,13行的else匹配9行的else if中的if。而第9行的else匹配第5行的if。

     运行结果如下:

    if和switch角色对换:

    f1函数中的if else判断逻辑换成switch如下:

    运行结果如下:

    可以看到运行结果没有任何的变化,我们完全可以用switch语句代替if。

    f2中的switch替换成if,如下:

    运行结果如下:

    运行结果完全不变,因此,if语句在功能上也可以完全替代switch语句。

    将上述的替换程序给出如下:

     1 #include <stdio.h>
     2 
     3 void f1(int i)
     4 {
     5     switch( i < 6 )
     6     {
     7         case 1:
     8             printf("Failed!
    ");
     9             break;
    10         
    11         default:
    12             switch( (6 <= i) && (i <= 8) )
    13             {
    14                 case 1:
    15                     printf("Good!
    ");
    16                     break;
    17                     
    18                 default:
    19                     printf("Perfect!
    ");
    20                     break;
    21             }
    22             break;
    23     }
    24 }
    25 
    26 void f2(char i)
    27 {
    28     if( 'c' == i )
    29     {
    30         printf("Compile
    ");
    31     }
    32     else if( 'd' == i )
    33     {
    34         printf("Debug
    ");
    35     }
    36     else if( 'o' == i )
    37     {
    38         printf("Object
    ");
    39     }
    40     else if( 'r' == i )
    41     {
    42         printf("Run
    ");
    43     }
    44     else
    45     {
    46         printf("Unknown
    ");
    47     }
    48 }
    49 
    50 int main()
    51 {
    52     f1(5);
    53     f1(9);
    54     f1(7);
    55     
    56     f2('o');
    57     f2('d');
    58     f2('e');
    59 
    60     return 0;
    61 }

    小结:

      if语句适用于复杂逻辑进行判断的情形中

      switch语句适用于对离散值进行判断的情形中

      if语句和switch语句在功能上可以相互替换

      if语句对于“按片”分支判断的情形更加简洁

      switch语句对于多分支判断的情形更加简洁

  • 相关阅读:
    开始准备AWS SysOps Administrator associate 认证考试,接下来的Blog都是准备过程中的知识点
    什么是 AWS Data Pipeline
    AWS WAF 的工作原理
    CloudTrail 的工作原理
    AngularJS尝鲜——快递运费计算
    IE UAF 漏洞(CVE-2012-4969)漏洞分析与利用
    学着分析CVE-2017-7269 -- IIS 6.0 WebDAV远程代码执行漏洞
    数据结构:实验六(单循环链表实现链式队列)
    EPS2.2 整数溢出漏洞分析到利用pwntools进行漏洞利用
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9532990.html
Copyright © 2020-2023  润新知