"long long [(,)]"声明可以在 C 中以某种方式工作吗?

标签 c declaration

我正在准备我们的编程测试,我读了这个long long A[(10,10)] 声明(它在我们类(class)之前的一些测试中),我没有更多信息关于。我所知道的唯一一件事是,通过调用 A[5][1]=something 来初始化以这种方式声明的变量是不可能的。否则,我会假设它是某种二维数组。
也可以是 comma operator但 gcc 编译器实际上无法识别它。

abc.c:3:16: error: expected ']'
long long A[10,10];
^ abc.c:3:13: note: to match this '['
long long A[10,10];

如果它是一回事,或者只是一些废话,你有什么线索吗? (我试图谷歌它,但这些东西并不那么容易找到......)
谢谢。

最佳答案

在数组声明中,需要constant-expression,它是expression 的子集。具体来说,逗号运算符和赋值表达式不是集合的一部分。

数组声明符是一种直接声明符:

direct-declarator: ... |
    direct-declarator "[" constant-expression? "]";

constant-expression: conditional-expression;

expression: assignment-expression | expression "," assignment-expression;

assignment-expression: conditional-expression |
    unary-expression assignment-operator assignment-expression;

所以这里的语法不允许逗号。

关于 "long long [(,)]"声明可以在 C 中以某种方式工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525556/

相关文章:

c - 退出应用程序时如何删除 UNIX 域套接字文件?

C程序字符串

Java 变量在类中的不同方法中不可用 - 新手

javascript - JS中声明的含义 - [[0]]

c++ - using 声明是否能够引用友元函数

C 字符串库

c++ - 通过 DLL 在 x64 上进行内联汇编

c - valgrind 没有捕捉到明显丢失的内存

c# - 如何声明要在 C# 表达式上使用的全局变量

c - 在 C 函数的参数中声明变量