The C notation i[ a ] wherein i is the index and a is the array is quite natural since i therein acts as a kind of »extractor function« which extracts the component with offset i of its argument a. However, while I was using this notation, I noticed what the actual problem with this notation is: when one wants to increment the index, then the notation ++i[ a ] will increment i[ a ] instead, so one has to write ( ++i )[ a ] ! Under such circumstances it eventually is better indeed to write the boring a[ ++i ]