打印

大家认为这两种写法孰优孰劣

[复制链接]
932|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2013-2-21 22:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言允许在模块内部定义仅限此模块使用的局部变量,如
void 函数(void){
    ....
    {
        char a;
        ....
    }
    ....
}
但是比较少看到有人这么做,不知是不是习惯的原因。
假如一个函数中有多个部分用到相同类型的局部变量,并且每个部分是按先后顺序相互独立的,如按照一般习惯写为:
void 函数(void){
    char a;
    ...
   
    //部分1
    a = ...;  //初始化a
    {         
        ... = a;  
        a = ...;
        ....
    }
    ....
    //部分n
    a = ...;  //初始化a
    {
        ... = a;
        a = ...;
        ...
    }
}
如果写成如下:
void hanshu(void){
   
    //部分1
    {         
        char a;
        
        ... = a;  
        a = ...;
        ....
    }
    ....
    //部分n
    {
        char a = ...;  //初始化a
        
        ... = a;
        a = ...;
        ...
    }
}
沙发
houcs|  楼主 | 2013-2-21 22:51 | 只看该作者
我感觉如第二种写砝比较容易读,很容易知道a的作用范围,而读第一种写法时还要考虑一下a的作用范围。所以俺认为第二种写砝比第一种写法好。大家认为这两种写法孰优孰劣呢?

使用特权

评论回复
板凳
liuzaiy| | 2013-2-21 22:52 | 只看该作者
似乎第二种好些,不过很少有人使用。

使用特权

评论回复
地板
yinxiangh| | 2013-2-21 22:52 | 只看该作者
不提倡用作用域区分同名变量吧

使用特权

评论回复
5
pangb| | 2013-2-21 22:53 | 只看该作者
除了for里的i, j, k

使用特权

评论回复
6
chenjunt| | 2013-2-21 22:54 | 只看该作者
楼上正解

使用特权

评论回复
7
houcs|  楼主 | 2013-2-21 22:54 | 只看该作者
哦,这样啊,知道了

使用特权

评论回复
8
houcs|  楼主 | 2013-2-21 22:55 | 只看该作者
结贴了,呵呵,周末愉快

使用特权

评论回复
9
Redstar2012| | 2013-2-22 22:59 | 只看该作者
第二种思路明确,这都是关于变量的作用域

使用特权

评论回复
10
meng730507| | 2013-2-25 10:50 | 只看该作者
短的函数无所谓,长的就该分成几个函数了!

使用特权

评论回复
11
李冬发| | 2013-2-25 14:51 | 只看该作者
第2种方法得非常小心。至少我在VC中发现过严重错误。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝