相关疑难解决方法(0)

int a [] = {1,2,}; 奇怪的逗号允许.任何特殊原因?

也许我不是来自这个星球,但在我看来,以下应该是语法错误:

int a[] = {1,2,}; //extra comma in the end
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.我很惊讶,当编译这段代码在Visual Studio中,但我已经学会了不至于C++规则而言信任MSVC的编译器,所以我检查的标准,它标准允许为好.如果你不相信我,你可以看到8.5.1的语法规则.

在此输入图像描述

为什么允许这样做?这可能是一个愚蠢无用的问题,但我希望你理解我为什么这么问.如果它是一般语法规则的子案例,我会理解 - 他们决定不再使一般语法更难以在初始化列表的末尾禁止冗余逗号.但不,明确允许附加逗号.例如,在函数调用参数列表的末尾(当函数采用时...)不允许使用冗余逗号,这是正常的.

那么,是否有任何特殊原因明确允许这个冗余逗号?

c++ syntax grammar language-lawyer

325
推荐指数
15
解决办法
3万
查看次数

标签 统计

c++ ×1

grammar ×1

language-lawyer ×1

syntax ×1