一部のインタビュアーが何らかの理由で尋ねるのが好きなこの小さなトリックの質問があります:
int arr[] = {1, 2, 3};
2[arr] = 5; // does this line compile?
assert(arr[2] == 5); // does this assertion fail?
私が理解できることから、a[b]
変換され*(a + b)
、加算は可換であるため、それらの順序は実際には重要ではありません。実際、それは問題なく2[a]
機能*(2 + a)
します。
これはCおよび/またはC++の仕様で動作することが保証されていますか?