### Question 6.11

I came across some ``joke'' code containing the ``expression'' `5["abcdef"]` . How can this be legal C?

Yes, Virginia, array subscripting is commutative in C. This curious fact follows from the pointer definition of array subscripting, namely that `a[e]` is identical to `*((a)+(e))`, for any two expressions `a` and `e`, as long as one of them is a pointer expression and one is integral. This unsuspected commutativity is often mentioned in C texts as if it were something to be proud of, but it finds no useful application outside of the Obfuscated C Contest (see question 20.36).

References: Rationale Sec. 3.3.2.1
H&S Sec. 5.4.1 p. 124, Sec. 7.4.1 pp. 186-7

Read sequentially: prev next up top

This page by Steve Summit // Copyright 1995 // mail feedback