以下两个声明之间是否有区别,除了显而易见的 - 名称:
int main()
{
char str1[17] = {'H','e','l','l','o'};
char str2[17] = {'H','e','l','l','o',};
}
第二个中的额外','是什么?这有什么意义吗?
两者似乎编译得很好,在这种情况下,它们似乎根据strcmp生成相同的字符串,至少是我所期望的,因为其余的数组都填充了零。
答案 0 :(得分:4)
不,它们完全相同。我相信允许使用尾随逗号,以便以C ++源代码的形式促进数组的机器生成。
答案 1 :(得分:4)
尾随逗号并非特定于大括号初始化,并且在编程语言中无处不在(JSON数据格式是异常值)。
除了简单的机器生成之外,从尾随逗号获得的一个(小)好处是较小的代码差异。如果你改变:
array<string, 20> a = {
"one",
"two",
"three",
};
到
array<string, 20> a = {
"one",
"two",
"three",
"four",
};
你只能获得1行差异。如果省略可选的尾随逗号,则需要更改2行以添加或删除最后一个元素。一致地使用尾随逗号可以在编辑和读取差异时节省数秒。