今天用牛客网刷题时,很多本地可以编译的题,牛客网过不了,经核查发现是编译器的问题,C语言经过漫长的发展,有很多历史遗留问题。但只要不是祖传代码,一般修改量不大,祖传代码只有用vc++ 6.0编译了。
1 error: use of undeclared identifier 'bool'在1999年才引进了bool,所以在如clang1.9或gcc5.4 中会错(牛客网c很多就用的这个),可以加上头文件:
#include <stdbool.h>
2 error: variable-sized object may not be initialized
原因:在C中,使用变量来定义数组长度是,这个数组可以定义,却不能同时进行初始化赋值,需要在之后赋值。
这个问题在c++中是不会出错的。
最后切记
bool a[5]={true};
或bool a[5]={1};
只是a[0]为true;
#include<stdio.h>
int main()
{
bool a[5]= {true};
for(int i=0; i<5; i++)
printf("%d\n",a[i]);
return 0;
}
而
bool a[5]={0};
或
bool a[5]={false};
则是
所以建议用初值为false的bool变量定义;