Điều này thật thú vị và đơn giản. -array[2]
giống với -*(array + 2)
, giống như -*(2 + array)
giống với -2[array]
, tức là -30.
Hiện đã là một bản sao cho trường hợp tổng quát của việc sử dụng dấu ngoặc vuông với mảng (With arrays, why is it the case that a[5] == 5[a]?), nhưng những đứa đây là unary -
hành ở phía trước.
Có vẻ như trực quan để cho rằng chỉ mục mảng thực tế sẽ là -2
, như array[-2]
.
Nhưng điều này không xảy ra do nguyên tắc ưu tiên điều hành:
operator []
có độ ưu tiên cao hơn unary -
, và như vậy được áp dụng đầu tiên.
tôi đã thể hiện sự tranformation với thuê bao mảng 'truyền thống' để làm điều này trực quan hơn
- như chúng ta không phủ nhận mảng trước khi subscripting nó, chúng tôi không phủ nhận 2 cùng một cách.
mảng [2] giống với 2 [mảng] – doctorlove
Tôi nhớ có một bản sao mà tôi đã xem cho câu hỏi này. Thật không may nó không có trong danh sách yêu thích của tôi. –
Điều này phải có hàng ngàn bản sao! – dasblinkenlight