c语言中函数变量定义是不是必须在函数的开始处?

菜头1 2003-08-20 05:57:53
我用vc编译.c文件,在函数中间定义变量,编译出错。
是vc的问题?
...全文
842 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜头1 2003-08-20
  • 打赏
  • 举报
回复
to: stukov2002(卡拉是头猪)
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100
idontlikenickname 2003-08-20
  • 打赏
  • 举报
回复


纯C语言是这样的,你的文件的扩展名是.C,所以编译器就以C的规则编译~
C++中规定可以从任何地方定义变量.

对于微软的VC++,它并没有严格执行标准的C++规则,比如:
void SomeCppFunction()
{
// Domain 1
...
for(int i = 0; i < 100; i ++)
{
...
}
// Domain 2
... // 对于VC++, i仍然可见.
}
变量i的作用域应该只在循环体中,而不包括Domain2以后的函数体内,所以如果你的程序存在移植方面的问题时就要格外小心~~

leasun 2003-08-20
  • 打赏
  • 举报
回复
C只允许在语句块的开始位置声明变量,比如:
int main()
{
int i;
i = 0;
{
int j;
j = 0;
}
}
vcforever 2003-08-20
  • 打赏
  • 举报
回复
我也没听说过这个规则!
疑惑中!
菜头1 2003-08-20
  • 打赏
  • 举报
回复
但是在函数里的独立的块内好像也可以声明变量,在VC中可以编译。不知道是不是符合标准?

我奇怪的是这个原则怎么一直没有听说过呢?
aflyinghorse 2003-08-20
  • 打赏
  • 举报
回复
c语言不能随时定义变量
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率
5956 2003-08-20
  • 打赏
  • 举报
回复
我查了书,c函数确实是要在开始之处申明变量
5956 2003-08-20
  • 打赏
  • 举报
回复
没学过c,学习,顺便帮顶
yakai 2003-08-20
  • 打赏
  • 举报
回复
同意alexxing,c确实不能在一个作用域内的执行语句之后再定义变量
菜头1 2003-08-20
  • 打赏
  • 举报
回复
就是说C语言的标准中变量必须在函数或者块的开始部分进行 声明/定义?
以前看的书好像都没有提过啊?在网上也没有看到相关的说明
yakai 2003-08-20
  • 打赏
  • 举报
回复
VC确实是可能会有问题,但人家就是出错怎么的也给了个话呀
tonybaobao 2003-08-20
  • 打赏
  • 举报
回复
不是吧?函数内部当然可以定义局部变量!而且C也有作用域阿!
alexxing 2003-08-20
  • 打赏
  • 举报
回复
当然啦,C++才允许在函数的任何地方定义变量

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧