Trong With arrays, why is it the case that a[5] == 5[a]? nó được giải thích rằng []
nhà điều hành trong a[5]
được định nghĩa là *(a + 5)
và vì +
là giao hoán, 5[a]
nghĩa *(5 + a)
và do đó hai biểu đề cập đến vị trí nhớ cùng. Khỏe.Tại sao 5 [a] hợp lệ và không tạo ra lỗi của số nhận dạng không hợp lệ?
Tuy nhiên, C cũng xác định trong 6.4.2.1 rằng số nhận dạng không thể bắt đầu bằng chữ số. Trong số 5[a]
, số nhận dạng mảng là 5
không phải là số nhận dạng hợp lệ. Tại sao 5[a]
không tạo ra lỗi về số nhận dạng không hợp lệ?
FYI: Tiêu chuẩn C sử dụng thuật ngữ _integer constant_ (làm rõ hằng số không có ký hiệu như trong các ngôn ngữ khác). – Olaf