Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15258
  • 博文数量: 10
  • 博客积分: 410
  • 博客等级: 下士
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-27 00:54
文章分类
文章存档

2010年(7)

2009年(3)

我的朋友
最近访客

分类: C/C++

2009-12-27 11:17:10

12  可以把变量保存在局部程序块中吗?

    用局部程序块来保存变量是不常见的,你应该尽量避免这样做,但也有极少数的例外。例如,为了调试程序,你可能要说明一个全局变量的局部实例,以便在相应的函数体内部进行测试。为了使程序的某一部分变得更易读,你也可能要使用局部程序块,例如,在接近变量被使用的地方说明一个变量有时就会使程序变得更易读。然而,编写得较好的程序通常不采用这种方式来说明变量,你应该尽量避免使用局部程序块来保存变量。

    请参见:
    1
1 什么是局部程序块?

13  什么时候用一条switch语句比用多条if语句更好?

    如果你有两个以上基于同一个数字(numeric)型变量的条件表达式,那么最好使用一条switch语句。例如,与其使用下述代码:
if (x ==l)
     printf ("x is equal to one. \n");
else if (x ==2)
     printf ("x is equal to two. \n");
else if (x = =3)
     printf ("x is equal to three. \n");
else
     printf ("x is not equal to one, two, or three. \n");

不如使用下述代码,它更易于阅读和维护:

switch (x)
{
     case 1:  printf ("x is equal to one. \n");
                      break;
     case 2:  printf ("x is equal to two. \n");
                      break
     case 3:  printf ('x is equal to three. \n");
                      break;
     default: printf ("x is not equal to one, two, or three. \n");
                      break;
}

   
注意,使用switch语句的前提是条件表达式必须基于同一个数字型变量。例如,尽管下述if语句包含两个以上的条件,但该例不能使用switch语句,因为该例基于字符串比较,而不是数字比较:

   char *name="Lupto";
    if(!stricmp(name
"Isaac"))   
        printf("Your name means'Laughter'
\n");
    else if(!stricmp(name
"Amy"))
        printf("Your name means'Beloved'
\n");
    else if(!stricmp(name
"Lloyd"))
        printf("Your name means'Mysterious'
\n");
    else
        printf("I haven't a clue as to what your name means
\n");

    请参见:
    1
4 switch语句必须包含default分支吗7   
    1
5 switch语句的最后一个分支可以不要break语句吗?

14  switch语句必须包含default分支吗?

   不,但是为了进行错误检查或逻辑检查,还是应该在switch语句中加入default分支。例如,下述switch语句完全合法:

switch (char_code)
{
      case tyt:
      case 'y': printf ( " You answered YES ! \n" )
           break
      case 'N':
      case 'n': printf ("You answered NO!\n");
           break
}

但是,如果一个未知字符被传递给这条switch语句,会出现什么情况呢?这时,程序将没有任何输出。因此,最好还是加入一个default分支,以处理这种情况:

......
default: printf ("Unknown response : %d\n", char_code);
          break
......

 
此外,default分支能给逻辑检查带来很多方便。例如,如果用switch语句来处理数目固定的条件,而且认为这些条件之外的值都属于逻辑错误,那么可以加入一个default分支来辨识逻辑错误。请看下列:

void move_cursor (int direction)
{
     switch (direction)
     {
           case UP:     cursor_up()
                            break
           case DOWN:   cursor_down()
                            break
           case LEFT:   cursor_left ()
                            break
           case RIGHT:  cursor_ right ( )
                             break
           default:     printf ("Logic error on line number %ld!!! \n",
                                     __ LINE__ )
                             break
     }
}
 
   
请参见:   
    1
3 什么时候用一条switch语句比用多条if语句更好
?
    1
5 Switch语句的最后一个分支可以不要break语句吗?

15  switch语句的最后一个分支可以不要break语句吗?

    尽管switch语句的最后一个分支不一定需要break语句,但最好还是在switch语句的每个分支后面加上break语句,包括最后一个分支。这样做的主要原因是:你的程序很可能要让另一个人来维护,他可能要增加一些新的分支,但没有注意到最后一个分支没有break语句,结果使原来的最后一个分支受到其后新增分支的干扰而失效。在每个分支后面加上break语句将防止发生这种错误并增强程序的安全性。此外,目前大多数优化编译程序都会忽略最后一条break语句,所以加入这条语句不会影响程序的性能。
   
请参见:
    1. 3
什么时候用一条switch语句比用多条if语句更好?
    1. 4 switch
语句必须包含default分支吗?

阅读(479) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~