读书人

关于for循环的一个很奇怪的有关问题

发布时间: 2013-11-19 22:55:29 作者: rapoo

关于for循环的一个很奇怪的问题,望大神解决~~
#include <stdio.h>
#include <string.h>

int main(void)
{

char arrA[]="hello";
char arrB[6];
int i;
strcpy(arrB, arrA);
//int i; 放在这里就报错,为什么?
for (i=0; i<6; i++)
{
printf("%c",arrB[i]);
}
printf("\n");
return 0;
}

为什么int i;放的位置不一样还报错啊! for
[解决办法]
The c programming language里面有这样一段话:In C, all variables must be declared before they are used, usually at the beginning of the function before any executable statements.

变量的声明要在一个函数可执行语句的前面。或者是在语句块(被{}包括的一段代码)的最前面(同样也是在可执行语句的前面)。
[解决办法]
你用的c编译器,不是c++,c变量必须在可执行语句之前定义好
[解决办法]

引用:
你用的c编译器,不是c++,c变量必须在可执行语句之前定义好

++
应该是应该是是c文件文件引起的吧!c语言不支持在函数中间定义变量的!
所以把文件改成cpp文件吧!
[解决办法]
引用:
Quote: 引用:

你用的c编译器,不是c++,c变量必须在可执行语句之前定义好

c/c++的编译器怎么区分的呢?

保存为cpp吧
[解决办法]
在C89标准中,变量声明语句必须放在在执行语句前,否则会报错。
[解决办法]
引用:
在C89标准中,变量声明语句必须放在在执行语句前,否则会报错。


C99标准中以支持变量声明语句放在函数中任意位置(使用前),但是VS/VC++6.0对C99并不是很兼容,so~
[解决办法]
引用:
Quote: 引用:

The c programming language里面有这样一段话:In C, all variables must be declared before they are used, usually at the beginning of the function before any executable statements.

变量的声明要在一个函数可执行语句的前面。或者是在语句块(被{}包括的一段代码)的最前面(同样也是在可执行语句的前面)。

但是我并没有在最前面也可以啊,就是在strcpy函数前面就可以了啊。

如果你知道什么叫可执行语句
[解决办法]
VS下.c文件默认调用的是C编译器,.cpp默认调用C++编译器

C89标准不支持任意位置定义变量,只能定义在函数的开头。C99可以定义在任意位置,不过目前只有CLang是默认C99的编译器,gcc要加-std=c99编译选项,比如gcc -std=c99 tset.c -o test,VS下还不支持C99标准。不过听说VS2013已经完全支持C99了,不过我没试过。
[解决办法]
引用:
Quote: 引用:

The c programming language里面有这样一段话:In C, all variables must be declared before they are used, usually at the beginning of the function before any executable statements.

变量的声明要在一个函数可执行语句的前面。或者是在语句块(被{}包括的一段代码)的最前面(同样也是在可执行语句的前面)。

但是我并没有在最前面也可以啊,就是在strcpy函数前面就可以了啊。

变量声明、定义不是执行语句,函数调用,赋值操作(定义时赋值不算)、for、while等等都是执行语句。

只要执行语句一出现,后面就不能再定义和声明对象了。第一句执行语句之前的都算最前面...

读书人网 >C语言

热点推荐