我偶然发现了这段代码。它不会给出错误,但它到底意味着什么呢?
int A[]={};编辑:我不得不编辑这篇文章,因为你们中的一些人要求提供上下文、编译器等。
我对编译器了解不多,但我设法找到了我正在使用的版本"gcc (tdm-1) 4.9.2“。
我自己试过代码,它确实可以正确运行,我也能够在数组上读写。我的问题是:当我声明这样的数组时,到底会发生什么?
发布于 2016-11-23 20:55:49
int A[]={};在C中是非法的。空的初始值设定项无效。参见C11 draft, 6.7.9 Initialization。
发布于 2016-11-23 21:02:00
它没有任何意义,它不是有效的C。
C11 6.7.9声明以下两种形式是有效的:
{ initializer-list }
{ initializer-list , }其中,initializer-list定义为以下其中一项:
designationopt initializer
initializer-list , designationopt initializer这可以是赋值表达式,也可以是C99指定的初始值设定项。空的初始值设定项列表不是有效语法。
发布于 2016-11-23 20:54:21
它正在定义int类型的空数组。
https://stackoverflow.com/questions/40765108
复制相似问题