正如Joel在Stack Overflow播客#34中用C编程语言(又名:K&R)所指出的那样,在C中提到了数组的这种属性:a[5] == 5[a]
乔尔说,这是因为指针运算,但我仍然不明白.为什么a[5] == 5[a]?
当涉及到"问题线"的"隐藏特征"时,没有C++的爱吗?想我会把它扔出去.C++的一些隐藏功能是什么?
有一个小技巧问题,一些采访者喜欢问什么原因:
int arr[] = {1, 2, 3};
2[arr] = 5; // does this line compile?
assert(arr[2] == 5); // does this assertion fail?
Run Code Online (Sandbox Code Playgroud)
根据我的理解,a[b]转换为*(a + b)并且因为加法是可交换的,所以它们的顺序并不重要,所以2[a]它确实*(2 + a)很好.
这可以保证按C和/或C++的规格工作吗?