dmg@ssc-vax.UUCP (David Geary) (07/08/88)
Well, I've grown tired of "Fortran vs. C", and the discussion of NULL that's been draaaaaaaaaaaaaging on in this newsgroup, so here's something a little different... Here's a quiz I give my Introductory C class on the first day ;-) What's the output of this program? #define NUM_STRINGS 6 static char *Strings[NUM_STRINGS] = { "Project", "Make", "Add", "Builtin", "Success", "Filer\n " }; char **Yuck = Strings; char *Putchar(c) char *c; { putchar(*c); return c; } main() { char *Ptr; char *Putchar(); Putchar((Putchar(Ptr = &**Yuck)) + 2); Putchar(Putchar((&**(Yuck += 3) + 5)) + 1); Putchar(Putchar((Yuck[-3] + 6)) - 2); Putchar(Putchar(&**(Yuck += 2) + 4) + 2); Putchar(Putchar((Ptr = &**(Yuck = Strings + 1))) + 1); Putchar(Putchar(&**(Yuck+1)+1)); putchar(*(&**(Yuck+2)+ strlen(*(Yuck+2))-1)); Putchar(Putchar(Putchar(&**(Yuck+3) + 4) + 1) + 1); Putchar(&**(Yuck + 4) + strlen(*(Yuck + 4)) - 2); } Of course, for all you seasoned C vets out there, this will be no problem. Anybody else have a more convoluted example than this? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ "...They don't give a damn, ~ ~ about no trumpet playin' band ~ ~ It aint what they call ~ ~ rock and roll..." ~ ~ ~ ~ Sultans of Swing ~ ~ Dire Straits ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- *********************************************************** * David Geary, Boeing Aerospace Co., Seattle, WA * * I disclaim all disclaimers.... * ***********************************************************