[comp.lang.c] What's the Output of This Program?

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....			  *
***********************************************************