打印

请教C语言局部变量作用范围

[复制链接]
3398|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
itelectron|  楼主 | 2014-11-2 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
itelectron|  楼主 | 2014-11-2 16:47 | 只看该作者
以前 一般 都是这样写的

int main(void)
{ unsigned short temp1,temp2;
  if()
  {
    temp1;
  }
  else
  {
    temp2;
  }
}
我的理解是  局部变量作用 域应该是 最靠近的  花括号 内  是否 可以这样 理解

使用特权

评论回复
板凳
itelectron|  楼主 | 2014-11-2 16:52 | 只看该作者
因为看到  老外 按照一 楼的 方法写   

1楼的方法  应该  比 2楼效率高  单一函数  大的 时候  可读性 也  比2楼 好  

使用特权

评论回复
地板
ayb_ice| | 2014-11-2 18:37 | 只看该作者
大括号内有效

使用特权

评论回复
5
dirtwillfly| | 2014-11-2 18:44 | 只看该作者
itelectron 发表于 2014-11-2 16:47
以前 一般 都是这样写的

int main(void)

作用域是所在的大括号

使用特权

评论回复
6
ZhangStudy| | 2014-11-2 19:35 | 只看该作者
效率基本一样,这得益于现在高效率的编译器。
一楼的更安全,不容易出错。

使用特权

评论回复
7
xlsbz| | 2014-11-2 20:28 | 只看该作者
不会。
主要是易读。使用变量的地方和定义变量的地方靠的近。容易理解代码。

使用特权

评论回复
8
ganxiang| | 2014-11-2 20:51 | 只看该作者
C语言?还是C++?好像C的话就只能定义在函数开始的位置吧。

使用特权

评论回复
9
李富贵| | 2014-11-2 21:04 | 只看该作者
ganxiang 发表于 2014-11-2 20:51
C语言?还是C++?好像C的话就只能定义在函数开始的位置吧。

你不会是看谭浩强学的C语言吧?撸主的写法在15年前的C99标准里面就明确支持了,难道国内教科书还在讲C89的语法?

使用特权

评论回复
10
李冬发| | 2014-11-3 04:41 | 只看该作者
实践证明1楼的写**有风险。
至少VC上出现过。

使用特权

评论回复
11
电子云图| | 2014-11-3 08:59 | 只看该作者
范围在大括号内,C99和GNU C这样写都是没问题的

使用特权

评论回复
12
cos12a| | 2014-11-3 12:24 | 只看该作者
都不重要.

使用特权

评论回复
13
MakeBetter| | 2014-11-3 16:45 | 只看该作者
同样的名字就不要重复用了。近一点就效率高了?人家编译器看你不用立马收回了,根本不用我们考虑。
另外,相同名字同样再定义,是很容易出错,主要是眼更容易花。
而且一个函数,不要写的太大,你写那么大,变量写的再近也不方便理解,这不是舍本求木么。

使用特权

评论回复
14
ayb_ice| | 2014-11-3 17:13 | 只看该作者
C89也可以这样写

使用特权

评论回复
15
李富贵| | 2014-11-3 17:45 | 只看该作者
ayb_ice 发表于 2014-11-3 17:13
C89也可以这样写

别扯了,C89要求变量定义在实体语句之前,撸主位程序出现if以后就不能再定义变量了,肯定是错的。

使用特权

评论回复
16
xlsbz| | 2014-11-3 18:54 | 只看该作者
李富贵 发表于 2014-11-2 21:04
你不会是看谭浩强学的C语言吧?撸主的写法在15年前的C99标准里面就明确支持了,难道国内教科书还在讲C89 ...

the c programimg languages 序里说
,标准只是给造编译器人看的。我们要关注不是c****,而是编译器支持啥

使用特权

评论回复
17
李富贵| | 2014-11-3 21:39 | 只看该作者
xlsbz 发表于 2014-11-3 18:54
the c programimg languages 序里说
,标准只是给造编译器人看的。我们要关注不是c****,而是编译器支持 ...

15年前标准都不支持的编译器,你还用他干什么?电子技术日新月异,5年前的东西都可能落后,你还抱残守缺,很有意思吗?

使用特权

评论回复
18
ayb_ice| | 2014-11-4 07:58 | 只看该作者
李富贵 发表于 2014-11-3 17:45
别扯了,C89要求变量定义在实体语句之前,撸主位程序出现if以后就不能再定义变量了,肯定是错的。 ...

不要信口开河

在大括号后面定义变量是随时可以的

使用特权

评论回复
19
chen_jhhb| | 2014-11-4 08:29 | 只看该作者
学习中

使用特权

评论回复
20
qqljhang| | 2014-11-8 20:24 | 只看该作者
二楼方法更安全.

使用特权

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

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2762

帖子

8

粉丝