两种写法孰优孰劣

[复制链接]
1943|16
 楼主| houcs 发表于 2013-10-20 13:25 | 显示全部楼层 |阅读模式
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-10-20 13:49 | 显示全部楼层
我感觉如第二种写砝比较容易读,很容易知道a的作用范围,而读第一种写法时还要考虑一下a的作用范围。所以俺认为第二种写砝比第一种写法好。大家认为这两种写法孰优孰劣呢?
liuzaiy 发表于 2013-10-20 13:51 | 显示全部楼层
似乎第二种好些,不过很少有人使用。
yinxiangh 发表于 2013-10-20 13:52 | 显示全部楼层
不提倡用作用域区分同名变量吧
pangb 发表于 2013-10-20 13:53 | 显示全部楼层
除了for里的i, j, k
chenjunt 发表于 2013-10-20 13:53 | 显示全部楼层
楼上正解
kangzj 发表于 2013-10-20 14:06 | 显示全部楼层
第二种思路明确,这都是关于变量的作用域
小小猫咪 发表于 2013-10-20 14:07 | 显示全部楼层
短的函数无所谓,长的就该分成几个函数了!
zyf部长 发表于 2013-10-20 14:08 | 显示全部楼层
第2种方法得非常小心。
zyf部长 发表于 2013-10-20 14:08 | 显示全部楼层
至少我在VC中发现过严重错误。
 楼主| houcs 发表于 2013-10-20 14:10 | 显示全部楼层
哦,这样啊,知道了
 楼主| houcs 发表于 2013-10-20 14:11 | 显示全部楼层
结贴了,呵呵,周末愉快
m564522634 发表于 2013-10-20 15:01 | 显示全部楼层
用第二种写法的话,在我们这里你可以走人了
hyh19890917 发表于 2013-10-20 16:09 | 显示全部楼层
要是在while里不就完了啊是不是啊
李冬发 发表于 2013-10-20 21:39 | 显示全部楼层
第二种方式,后果灰常严重!
dictionary 发表于 2013-10-20 23:41 | 显示全部楼层
第二种方法 如果放在长区域里面的话 几乎就不能区分这个a是属于哪个区域的,要翻很长的代码才能确定a的作用范围 ,会被人骂死的!
ddb_21ic 发表于 2013-10-21 09:50 | 显示全部楼层
最好还是用一看名字就明白的变量,不要依靠读代码才能明白
简单变量只能用于约定成俗的变量,i,j,x,y这类
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部