lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Paige DePol once stated:
> >> I don't know what you mean by "the whole 2[pa] bit" though, can you explain?
> > 
> > #include <stdio.h>
> > 
> > char *a[] = { "zero" , "one" , "two" , "three" };
> > 
> > int main(void)
> > {
> >  puts( a[0] );
> >  puts( 1[a] );
> > 
> >  putchar( 2[ 3[a] ] ); putchar('\n');
> >  putchar( 2["0123"] ); putchar('\n');
> > 
> >  return 0;
> > }
> > 
> >  Valid.  And it runs without error.
> 
> What the heck is this voodoo magic? I have never seen this syntax before.

  It comes because array syntax is "syntactic surgar."  So let's take a[1]. 
This is

	a[1] = *(a + 1)

And because addition is commutative, you also have

	a[1] = *(1 + a)

which, when you adjust the left side:

	1[a] = *(1 + a)

And viola!  Voodoo magic.

  -spc

[1]	An example, not a real foot note [2].

[2]	If there were real foot notes, there would be foot notes. [3]

[3]	Fnord.