if语句:

 

 

switch语句分析:

 

 

 

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

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);
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!\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);
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语句对于多分支判断的情形更加简洁

 

posted on 2018-08-25 09:44  周伯通789  阅读(163)  评论(0编辑  收藏  举报