我对以下代码有疑问:
int main()
{
int array1 = {1,2,3,4,5}; //error in c++ , warning in c
int array2[] = {1,2,3,4,5};
int array3[5] = {1,2,3,4,5};
}
这段代码在 c++
中的第 3 行出现错误,但在 c
中没有?
我知道 array1
实际上是一个 int
而 array2
和 array3
是数组,那为什么不c
编译器显示错误,但只是警告:“标量初始化中的多余元素”
这样的定义有没有用,为什么在c
中有效?
最佳答案
它是无效的 C。参见 C11 6.7.9:
No initializer shall attempt to provide a value for an object not contained within the entity being initialized.
我猜你正在使用 gcc。然后,如果您希望您的程序表现得像严格的标准 C 语言,请按如下方式编译它:
gcc -std=c11 -pedantic-errors
给予
error: excess elements in scalar initializer
关于c++ - C中的数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26627863/