我正在准备我们的编程测试,我读了这个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/