第6课 - 分支语句

第6课 - 分支语句

1. if 语句分析

(1)if 语句用于根据条件选择执行语句

      

(2)else 不能独立存在且总是与它最近的 if 相匹配,else 语句后可以连接其它if语句

(3)if 语句中零值比较的注意点,这个考点频繁出现在C语言笔试中!!!

  • bool类型  ==>  bool型变量应该直接出现在条件中,不要进行比较

            

  • 整型  ==>  变量和0值比较时,0值应该出现在比较符号左边     // 防止将 == 写成 =,那样条件永远不成立; 0放在左边,误写为 = 会编译报错

            

  • float型  ==>  因为float是不精确表示,0.0在内存中的表示可能是与其相近的一个值,所以不能直接和0值比较,需要定义精度

           

2. switch语句分析

(1)switch语句经常用在单个条件多个分支的情形

(2)case语句后面必须要有break,否则会导致分支重叠,实际工作中很多的bug就是由于忘记加break导致的!

(3)default语句有必要加上,以处理特殊情况

        

(4)case语句中的值只能整型字符型

(5)case语句的排列顺序遵照下面的规则,这样代码更加易读

  • 按字母或数字顺序排列各条语句
  • 正常情况放在前面,异常情况放在后面
  • default 语句只用于处理真正的默认情况

【if 和 switch使用示例】

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

if 和 switch有各自适用的场合,这样代码看起来逻辑更加清晰!但是if 和 switch 两者也能进行转换,将前面的代码进行转换......

【有趣的角色互换】

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

 

posted @ 2019-11-13 22:44  Hengs  阅读(265)  评论(0编辑  收藏  举报