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

时间:2022-08-31 19:04:14
我用vc编译.c文件,在函数中间定义变量,编译出错。
是vc的问题?

13 个解决方案

#1


当然啦,C++才允许在函数的任何地方定义变量

#2


不是吧?函数内部当然可以定义局部变量!而且C也有作用域阿!

#3


VC确实是可能会有问题,但人家就是出错怎么的也给了个话呀

#4


就是说C语言的标准中变量必须在函数或者块的开始部分进行 声明/定义?
以前看的书好像都没有提过啊?在网上也没有看到相关的说明

#5


同意alexxing,c确实不能在一个作用域内的执行语句之后再定义变量

#6


没学过c,学习,顺便帮顶

#7


我查了书,c函数确实是要在开始之处申明变量

#8


c语言不能随时定义变量
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率

#9


但是在函数里的独立的块内好像也可以声明变量,在VC中可以编译。不知道是不是符合标准?

我奇怪的是这个原则怎么一直没有听说过呢?

#10


我也没听说过这个规则!
疑惑中!

#11


C只允许在语句块的开始位置声明变量,比如:
int main()
{
  int i;
  i = 0;
  {
    int j;
    j = 0;
  }
}

#12




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

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

#13


to: stukov2002(卡拉是头猪) 
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100

#1


当然啦,C++才允许在函数的任何地方定义变量

#2


不是吧?函数内部当然可以定义局部变量!而且C也有作用域阿!

#3


VC确实是可能会有问题,但人家就是出错怎么的也给了个话呀

#4


就是说C语言的标准中变量必须在函数或者块的开始部分进行 声明/定义?
以前看的书好像都没有提过啊?在网上也没有看到相关的说明

#5


同意alexxing,c确实不能在一个作用域内的执行语句之后再定义变量

#6


没学过c,学习,顺便帮顶

#7


我查了书,c函数确实是要在开始之处申明变量

#8


c语言不能随时定义变量
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率

#9


但是在函数里的独立的块内好像也可以声明变量,在VC中可以编译。不知道是不是符合标准?

我奇怪的是这个原则怎么一直没有听说过呢?

#10


我也没听说过这个规则!
疑惑中!

#11


C只允许在语句块的开始位置声明变量,比如:
int main()
{
  int i;
  i = 0;
  {
    int j;
    j = 0;
  }
}

#12




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

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

#13


to: stukov2002(卡拉是头猪) 
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100