在 C89 中 A.1.2.2 声明
直接声明符 [ 常量表达式 ]
在 C99 A.2.2 声明中
直接声明符 [ 类型限定符列表_opt 赋值表达式_opt ]
我理解assignment-expression_opt为var = 1;。但数组的声明方式并不像int arr[i = 0];. 为什么 C99 使用术语“赋值表达式”而不是“常量表达式”?它是什么意思?
在 C89 中,不支持可变长度数组。这意味着数组大小必须在编译时固定。
从 C99 开始,声明和语句可以混合在一个块中,因此现在允许必须执行的完整表达式作为初始值设定项。这也是允许创建可变长度数组的原因。
因此,像这样的声明int arr[i=0];是有效的语法,尽管它是无效的,因为它创建了一个大小为 0 的数组。 int arr[i=2];是有效的,并且将创建arr为大小为 2 的数组int,并且它设置i为 2。
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |