c++ - C中的数组初始化

标签 c++ c arrays

我对以下代码有疑问:

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 实际上是一个 intarray2array3 是数组,那为什么不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/

相关文章:

c - 找不到 erl_nif.h

c - 为什么我在编译时得到 "warning: function returns address of local variable [-Wreturn-local-addr]"?

c++ - INET无线接口(interface)表模块参数

c++ - 您将如何从结构中随机选择路径?

c++ - 同类的类(class)成员?

c++ - 混淆是指针和虚函数的内存分配

c - C 中字符串数组的值增加

c - 意外结果,因为浮点减法变为 -0.0 和 +0.0

java - 我如何使用 Arrays.toString(reverse) 打印我的数组而不使用 []

c - 在 C 编程中检索数组值。我该如何修复这些错误?