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

[复制链接]
4183|24
 楼主| itelectron 发表于 2014-11-2 16:44 | 显示全部楼层 |阅读模式
int main(void)
{
  if()
  {
    unsigned short temp;
  }
  else
  {
    unsigned short temp;
  }
}

如果如上面 定义 是否 会认为是 同一个 变量
 楼主| 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 来自手机 | 显示全部楼层
大括号内有效
dirtwillfly 发表于 2014-11-2 18:44 | 显示全部楼层
itelectron 发表于 2014-11-2 16:47
以前 一般 都是这样写的

int main(void)

作用域是所在的大括号
ZhangStudy 发表于 2014-11-2 19:35 | 显示全部楼层
效率基本一样,这得益于现在高效率的编译器。
一楼的更安全,不容易出错。
xlsbz 发表于 2014-11-2 20:28 | 显示全部楼层
不会。
主要是易读。使用变量的地方和定义变量的地方靠的近。容易理解代码。
ganxiang 发表于 2014-11-2 20:51 | 显示全部楼层
C语言?还是C++?好像C的话就只能定义在函数开始的位置吧。
李富贵 发表于 2014-11-2 21:04 | 显示全部楼层
ganxiang 发表于 2014-11-2 20:51
C语言?还是C++?好像C的话就只能定义在函数开始的位置吧。

你不会是看谭浩强学的C语言吧?撸主的写法在15年前的C99标准里面就明确支持了,难道国内教科书还在讲C89的语法?
李冬发 发表于 2014-11-3 04:41 | 显示全部楼层
实践证明1楼的写**有风险。
至少VC上出现过。
电子云图 发表于 2014-11-3 08:59 | 显示全部楼层
范围在大括号内,C99和GNU C这样写都是没问题的
cos12a 发表于 2014-11-3 12:24 | 显示全部楼层
都不重要.
MakeBetter 发表于 2014-11-3 16:45 | 显示全部楼层
同样的名字就不要重复用了。近一点就效率高了?人家编译器看你不用立马收回了,根本不用我们考虑。
另外,相同名字同样再定义,是很容易出错,主要是眼更容易花。
而且一个函数,不要写的太大,你写那么大,变量写的再近也不方便理解,这不是舍本求木么。
ayb_ice 发表于 2014-11-3 17:13 | 显示全部楼层
C89也可以这样写
李富贵 发表于 2014-11-3 17:45 | 显示全部楼层
ayb_ice 发表于 2014-11-3 17:13
C89也可以这样写

别扯了,C89要求变量定义在实体语句之前,撸主位程序出现if以后就不能再定义变量了,肯定是错的。
xlsbz 发表于 2014-11-3 18:54 来自手机 | 显示全部楼层
李富贵 发表于 2014-11-2 21:04
你不会是看谭浩强学的C语言吧?撸主的写法在15年前的C99标准里面就明确支持了,难道国内教科书还在讲C89 ...

the c programimg languages 序里说
,标准只是给造编译器人看的。我们要关注不是c****,而是编译器支持啥
李富贵 发表于 2014-11-3 21:39 | 显示全部楼层
xlsbz 发表于 2014-11-3 18:54
the c programimg languages 序里说
,标准只是给造编译器人看的。我们要关注不是c****,而是编译器支持 ...

15年前标准都不支持的编译器,你还用他干什么?电子技术日新月异,5年前的东西都可能落后,你还抱残守缺,很有意思吗?
ayb_ice 发表于 2014-11-4 07:58 | 显示全部楼层
李富贵 发表于 2014-11-3 17:45
别扯了,C89要求变量定义在实体语句之前,撸主位程序出现if以后就不能再定义变量了,肯定是错的。 ...

不要信口开河

在大括号后面定义变量是随时可以的
chen_jhhb 发表于 2014-11-4 08:29 | 显示全部楼层
学习中
qqljhang 发表于 2014-11-8 20:24 | 显示全部楼层
二楼方法更安全.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

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