大型播种机 萝卜深:C定义变量的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 00:33:19
请问一下,C语言要如何定义变量呢,请看看下面代码
main()
{
int a=5;
printf("Hello\n");
printf("%d\n",a);
}
像这样就能编译通过,但是如果我把变量放在其它地方就不行,一定要放在最前面,请问C规定在函数中定义变量定义一定要在函数的最开头吗,下面这个就总是不能通过,望高手能解我心中疑团。
main()
{
printf("Hello\n");
int a=5;
printf("%d\n",a);
}
谢谢。

标准C语言中规定所有变量只可以在一个程序块的最开始处进行变量说明,例如在函数的最开始处,for语句的最开始处,while语句的最开始处,if语句最开始处等:例程如下:(以下程序都是经过实际测试的)
for语句的例子:
#include<stdio.h>
void main()
{

printf("Hello\n");
for(int i=0;i<1;i++)
{
int a=5;
printf("%d\n",a);
}
}

while语句的例子:
#include<stdio.h>
void main()
{
int i=0;
printf("Hello\n");
while(i==0)
{
int a=5;
printf("%d\n",a);
i++;
}
}
if语句的例子:
#include<stdio.h>
void main()
{
int i=0;
printf("Hello\n");
if(i==0)
{
int a=5;
printf("%d\n",a);
}
}

根据实际经验,变量的声名只要放在大括{}号的开头就都能通过,只是大括号结束变量也就作废了.
比如:
main()
{
printf("Hello\n");
{int a=5;
printf("%d\n",a);}
}
就可以通过.

AnsiC标准规定变量必须声明在函数最开始的地方,而C99则允许在使用的时候才声明,这和C++规定是一样的。所以,如果你使用C++编译器来编译C源程序的话,下面这样的代码也可以通过。
main()
{
for(int i=0;i<100;i++);
return 0;
}
P.S.这段代码什么都没有做,但在TC下是通不过的,在VC++里可以.

对, 所有的变量都要声明在函数的最开始,
语句永远在所有变量后面

C中变量是规定要先声明的!