在我的代码中,我无法初始化for循环初始化部分中的变量.当我写这段代码时:
long unsigned int arr[3][3];
char str[50];
for(;gets(str);)
{
int temp=0;
for(int i,j,k=0; str[k]!='\0'; k++){ if(str[k]!=' ')temp=temp*10+(str[k]-48);
Run Code Online (Sandbox Code Playgroud)
编译器显示
error: 'for' loop initial declarations are only allowed in c99 mode
Run Code Online (Sandbox Code Playgroud)
我不知道这意味着什么,但如果我写这样的代码:
long unsigned int arr[3][3];
char str[50];
for(;gets(str);)
{
int temp=0;
int i,j,k=0;
for(; str[k]!='\0'; k++){ if(str[k]!=' ')temp=temp*10+(str[k]-48);
Run Code Online (Sandbox Code Playgroud)
它工作正常.为什么会这样?
在循环中声明变量,如
for (int i = 0; ...; ...)
Run Code Online (Sandbox Code Playgroud)
在C99标准中是新的,并且在早期标准中是不允许的.错误消息告诉您的是,您的编译器已设置为使用早期标准进行编译,因此您无法在for语句中使用声明.
您必须从for语句中删除声明,或者在编译时告诉编译器使用更高版本的标准.-std=c99如果你有GCC或clang,可以通过添加标志来告诉编译器使用更高版本.