And you could save an additional character by changing the loop test to a+b form, i.e.:
int i,x[99];for(x[98]=i=1;x+98;)i*=!++x[i++];
The other array references are l-values.
int i,x[99];for(x[98]=i=1;x+98;)i*=!++x[i++];
The other array references are l-values.