【发布时间】:2019-06-20 09:51:18
【问题描述】:
最近我看到一个问题的答案,他们解释说以这种方式寻址数组<number>[array] 是有效的 C 代码。
How do square brackets work in C?
例子:
char x[] = {'A','B','C','D','E','F','G','H','I','J'};
printf("%d\n",5[X]);
//Will print 70 == 'F'
对于包括作者在内的所有人来说,这种表示法似乎很麻烦并且可能令人困惑。
这种寻址数组的方式是否有一些正当的优势?
或
我可以无忧无虑地继续我的生活吗?
【问题讨论】:
-
即使如何设置代码样式只是一个见仁见智的问题,也有合理的理由使用某些语法而不是其他语法。因此问题。
-
@kiranBiradar 我不同意。关于清洁代码的通用建议很少纯粹基于意见。使用这种语法没有好处,只有坏处,因此客观上很糟糕。另外,OP没有问它是否好。 OP询问is是否有任何优势。
-
@kiranBiradar 我不同意。 OP 明确要求提供理由。鉴于这种语法是明确合法的,这是一个有效的问题。 (答案是,这甚至没有正当理由合法。C 的作者只是想聪明一点:下标操作没有理由支持交换语法)
-
@kiranBiradar 这绝对不是。答案可能是“没有客观的利弊”,但这是一个客观的答案。
-
@RuudHelderman 我认为是的。
标签: c